Czy słyszałeś o nadchodzących datetimezmianach w bibliotece w Pythonie 4? Jest to dość znaczące, ponieważ jest to pierwsza zauważalna wsteczna niekompatybilna zmiana w następnej dużej wersji Pythona od czasu przejścia całego py2 na py3 i prawdopodobnie będzie wymagać zmian w większości programów Pythona podczas aktualizacji.
Główny zespół Pythona, biorąc pod uwagę, ile czasu zajęło wycofanie py2, nie był do końca zadowolony z takiej zmiany, a temat był generalnie kontrowersyjny, gdy tylko się pojawiał (zobacz na przykład ten wątek ). Mimo to ostatecznie musieli się zgodzić, że obecna implementacja datetimepowoduje więcej szkód, niż powinna, i że problemy projektowe z nią związane są fundamentalne i nie można ich naprawić w sposób zgodny z poprzednimi wersjami bez nieprzyjemnych skrajnych przypadków - wszystko ze względu na sposób działania teorii względności i jak to nie zgadza się z naiwną interpretacją czasu.
Cytat PEP podsumowuje to najlepiej:
Odrzucone pomysły
Pomysł opublikowania poprawionego datetimepakietu jako oddzielnego reldatetimepakietu był początkowo rozważany, ale po długiej debacie uznano go za niepraktyczny. Społeczność naukowa jest podstawową grupą użytkowników Pythona i powinniśmy zapewnić, że Python pozostanie realną opcją dla ich przypadków użycia. Ostatecznie wydaje się moralnie błędne oczekiwanie, że ta grupa będzie przełączać się między dwiema różnymi implementacjami daty i godziny z powodu podstawowego błędu architektury w domyślnej implementacji. To uzasadnia wsteczną niezgodną zmianę.
Ten kod działa teraz doskonale w Pythonie 3.9…
>>> a = datetime(2001, 2, 3, 4, 5, 6, 789, tzinfo=pytz.tzinfo("Europe/Paris"))
>>> b = datetime(2001, 12, 13, 14, 56, 7, tzinfo=pytz.tzinfo("Europe/Warsaw"))
>>> a == b
False
>>> a < b
True
>>> a = datetime(2001, 2, 3, 4, 5, 6, 789, tzinfo=pytz.tzinfo("Europe/Paris"))
>>> b = datetime(2001, 12, 13, 14, 56, 7, tzinfo=pytz.tzinfo("Europe/Warsaw"))
>>> a == b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RelativisticError: 'datetime.datetime' objects cannot be compared without a frame of reference
Aby uniknąć takiej niejednoznaczności, kod należy przepisać na:
>>> with datetime.relativistic.FrameOfReference("Earth"):
... a == b
...
False
To jest sedno i oczywiście proszę przeczytać PEP, aby zapoznać się z uzasadnieniem i wszystkimi interesującymi szczegółami implementacji.
Na pewno słyszałeś o wszystkich nowych, potężnych wtyczkach ChatGPT, takich jak przeglądarka, interpreter kodu itp. Ale jest problem, dostęp do wtyczek jest ograniczony do listy oczekujących, przez co wielu nie ma do nich dostępu.
W tym tygodniu otrzymałem wiadomość e-mail od członka codziennej listy e-mailowej. Chcieli wiedzieć: Jakie zasoby odwiedzasz codziennie, co tydzień i co miesiąc? Świetne pytanie! Cieszę się, że mogę podzielić się spostrzeżeniami na temat mojego przepływu pracy i najlepszych zasobów, z których korzystam.
Wczoraj zamknęliśmy drzwi tegorocznego Konkursu Piosenki Eurowizji błyskotliwym, chaotycznym wielkim finałem, w którym szwedzka piosenkarka Loreen zabrała do domu trofeum, stając się pierwszą kobietą, która wygrała dwa razy i przywracając koronę Szwecji 50 lat po tym, jak ABBA wygrała konkurs z „Waterloo”. Stali się jednym z największych zespołów w kanonie muzyki pop.
Jeśli chcemy dalej prosperować na tej planecie, będziemy musieli prowadzić niebezpieczne rozmowy. Takie, które rzucają wyzwanie temu, co zrobiliśmy, co robimy i co obecnie zamierzamy robić (lub planujemy robić).
„Hej, Siri, zagraj w Me Dive autorstwa Olivii Dean”. W maju 2021 rozpocząłem staż w Future Academy Africa w Akure w Nigerii.