Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3635
| From | Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: Python, angles et heures. Datetime ? |
| Date | 2021-11-15 17:52 +0100 |
| Organization | Université de Strasbourg |
| Message-ID | <87a6i5icnv.fsf@universite-de-strasbourg.fr.invalid> (permalink) |
| References | <smr8cc$78l$1@gioia.aioe.org> <87ee7iilg8.fsf@universite-de-strasbourg.fr.invalid> <smsu5t$k3i$1@gioia.aioe.org> |
Dominique <zzz@aol.com.invalid> writes: [...] > Je pensais renforcer mon script avec tes lignes : > > if d < 360 and m < 60 and s < 60: > return d,m,s > else: > return None > > mais il me faudrait distinguer les heures (maxi 24) des angles... > Placer un modulo derrière demanderait de distinguer l'un de l'autre... > Le modulo interviendra dans le travail au-delà. Je pense que cela mérite deux fonctions différentes (et aussi deux regexp différentes). Je ne pense pas qu'il y ait quelque chose à gagner à combiner les deux en une. > Ce que j'ignore, c'est le comportement de re.compile... À quoi sert-il ? La raison est un peu théorique. En fait, l'analyse d'un texte par rapport à une expression régulière se fait en deux étapes : 1) l'expression régulière est transformée en un automate fini équivalent (d'abord non-déterministe, puis déterministe) 2) l'automate est utilisé pour dire si le texte fourni correspond ou pas à l'expression régulière/automate La première étape prend en général beaucoup plus de temps que la seconde (qui est aussi rapide que possible puisqu'elle examine chaque caractère une seule fois). Donc, si ton code fait beaucoup d'appels à match()/matchfull()/etc. avec la même expression régulière, il est possible de faire une seule fois la première étape, puisqu'elle dépend seulement de l'expression régulière. C'est ce que fait re.compile(). En résumé : - re.match (regex, texte) -> étapes 1 et 2 - dfa = re.compile (regex) -> étape 1 - dfa.match (texte) -> étape 2 Le gain de temps d'exécution en cas de réutilisation est en général substantiel. D'ailleurs, c'est tellement vrai que le module re le fait tout seul maintenant (il garde en mémoire les dernières expressions régulières avec leur automate, pour éviter d'avoir à refaire la première étape). -- Alain.
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-14 16:01 +0100
Re: Python, angles et heures. Datetime ? Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-11-14 20:30 +0100
Re: Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-15 07:19 +0100
Re: Python, angles et heures. Datetime ? Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-11-15 17:52 +0100
Re: Python, angles et heures. Datetime ? Olivier Miakinen <om+news@miakinen.net> - 2021-11-15 17:59 +0100
Re: Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-15 19:23 +0100
Re: Python, angles et heures. Datetime ? Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-11-15 20:59 +0100
Re: Python, angles et heures. Datetime ? Damien Wyart <damien.wyart@free.fr> - 2021-11-15 16:22 +0100
Re: Python, angles et heures. Datetime ? Dominique <zzz@aol.com.invalid> - 2021-11-16 06:28 +0100
csiph-web