Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #3635

Re: Python, angles et heures. Datetime ?

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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