bonjour
j'ai
mais python ne reconnait pas strptimeCode:
1
2
3
4
5 from datetime import date, timedelta, strptime auj=date.today() date_str="2020-01-01" date_obj=strptime(date_str,"%y-%m-%d")
pourquoi?
bonjour
j'ai
mais python ne reconnait pas strptimeCode:
1
2
3
4
5 from datetime import date, timedelta, strptime auj=date.today() date_str="2020-01-01" date_obj=strptime(date_str,"%y-%m-%d")
pourquoi?
Parce qu'il appartient à datetime.datetime, pas à datetime tout court.
Pour l'appeler :
Chose que tu aurais apprise aussi rapidement que moi (< 30 secondes) en tapant simplement "strptime" dans ton moteur de recherche ;)Code:
1
2
3 from datetime import datetime datetime.strptime(date_string, "%d %B, %Y")
je l'avias fait
je voyais un import comme ca:
je pensais que c'était équivalent àCode:from datetime import datetime
Code:import datetime
Bonjour
Pourquoi surcharger un interpréteur déjà (relativement) peu rapide en lui demandant de traiter à l'identique deux instructions là où une seule suffit ?
import truc va importer le contenu de "truc" dans un espace de nom dédié (espace nommé "truc"). Si "truc" contient la fonction "toto", alors on y accède via truc.toto().
from truc import toto va importer l'élément demandé (ici la fonction "toto") dans l'espace de nom global du programme. On accède alors à la fonction via toto(). Ca peut paraître plus sympa au premier abord mais si toi tu as créé ta propre fonction "toto" il y en aura une des deux qui sautera.
Ici le petit quiproquo c'est qu'il y a un module nommé "datetime" qui contient un objet de même nom "datetime" ; et cet objet contient la méthode "strptime()". Donc dans un cas d'import c'est datetime.datetime.strptime() et de l'autre c'est datetime.strptime()...
2 bonnes raisons:
- datetime.datetime.strptime, c'est l'accès à 2 dictionnaires pour récupérer l'objet méthode strptime avant de pouvoir l'exécuter. Si l'opération est répétée plusieurs milliers de fois, on aura intérêt à faire ces accès une seule fois en utilisant la variable strptime définie par l'assignation strptime = datetime.datetime.strptime
- Ce qui s'applique à Python s'applique aussi à l'humain qui a peut être envie de taper 8 caractères (ou moins car z = datetime.datetime.strptime marche aussi) au lieu de 26.
- W
Quand on relit le premier post et qu'on essaie d'en tirer une intention, l'idée de départ est de raccourcir la longueur des chaines de caractères à taper. Mais ce qui marche pour date et timedelta ne marche pas pour strptime (avec de bonnes raisons).
Et l'interrogation qui vient après est complètement décalée avec cette intention: c'est juste confus comme le code mais se mélanger les pinceaux quand on débute est normal.
- W