| Deutsch English Français Italiano |
|
<87a6i5icnv.fsf@universite-de-strasbourg.fr.invalid> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!usenet.goja.nl.eu.org!aioe.org!NmhHF3GLbzxJR67/r10DhQ.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> Newsgroups: fr.comp.lang.python Subject: Re: Python, angles et heures. Datetime ? Date: Mon, 15 Nov 2021 17:52:52 +0100 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <87a6i5icnv.fsf@universite-de-strasbourg.fr.invalid> References: <smr8cc$78l$1@gioia.aioe.org> <87ee7iilg8.fsf@universite-de-strasbourg.fr.invalid> <smsu5t$k3i$1@gioia.aioe.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="36107"; posting-host="NmhHF3GLbzxJR67/r10DhQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) X-Notice: Filtered by postfilter v. 0.9.2 Cancel-Lock: sha1:dC/BZSfAoYjr3KFqjB6vI2J5pno= Bytes: 3308 Lines: 60 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=C3=A8re demanderait de distinguer l'un de l'autre.= ... > Le modulo interviendra dans le travail au-del=C3=A0. Je pense que cela m=C3=A9rite deux fonctions diff=C3=A9rentes (et aussi deux regexp diff=C3=A9rentes). Je ne pense pas qu'il y ait quelque chose =C3=A0 = gagner =C3=A0 combiner les deux en une. > Ce que j'ignore, c'est le comportement de re.compile... =C3=80 quoi sert-= il ? La raison est un peu th=C3=A9orique. En fait, l'analyse d'un texte par rapport =C3=A0 une expression r=C3=A9guli=C3=A8re se fait en deux =C3=A9tap= es : 1) l'expression r=C3=A9guli=C3=A8re est transform=C3=A9e en un automate fin= i =C3=A9quivalent (d'abord non-d=C3=A9terministe, puis d=C3=A9terministe) 2) l'automate est utilis=C3=A9 pour dire si le texte fourni correspond ou p= as =C3=A0 l'expression r=C3=A9guli=C3=A8re/automate La premi=C3=A8re =C3=A9tape prend en g=C3=A9n=C3=A9ral beaucoup plus de tem= ps que la seconde (qui est aussi rapide que possible puisqu'elle examine chaque caract=C3=A8re une seule fois). Donc, si ton code fait beaucoup d'appels =C3=A0 match()/matchfull()/etc. avec la m=C3=AAme expression r=C3=A9guli=C3=A8re, = il est possible de faire une seule fois la premi=C3=A8re =C3=A9tape, puisqu'elle d= =C3=A9pend seulement de l'expression r=C3=A9guli=C3=A8re. C'est ce que fait re.compile= (). En r=C3=A9sum=C3=A9 : - re.match (regex, texte) -> =C3=A9tapes 1 et 2 - dfa =3D re.compile (regex) -> =C3=A9tape 1 - dfa.match (texte) -> =C3=A9tape 2 Le gain de temps d'ex=C3=A9cution en cas de r=C3=A9utilisation est en g=C3= =A9n=C3=A9ral substantiel. D'ailleurs, c'est tellement vrai que le module re le fait tout seul maintenant (il garde en m=C3=A9moire les derni=C3=A8res expressio= ns r=C3=A9guli=C3=A8res avec leur automate, pour =C3=A9viter d'avoir =C3=A0 re= faire la premi=C3=A8re =C3=A9tape). -- Alain.