Przez przypadek zauważyłem że oba csv
i re
moduły Pythona biblioteki standardowej mają .__version__
atrybut:Dlaczego istnieją ciągi __version__ w niektórych modułach standardowej biblioteki Python?
>>> import re, csv
>>> re.__version__
'2.2.1'
>>> csv.__version__
'1.0'
Zaskakuje mnie, ponieważ są one częścią biblioteki standardowej, więc spodziewałbym ich wersji, które zostaną określone przez sys.version
(i sys.version_info
).
Zauważyłem, że wartości atrybutów są takie same dla Pythona 2.7.13 i 3.6.1, mimo że moduły się zmieniły.
Czy są one po prostu rodzajem "skamieniałości kodu", czy też mają jakiś sens, a programiści powinni zwracać uwagę na ich wartości?
myślę mieszać wersji Pythona w wersji biblioteki. Jeśli na przykład pracujesz z systemem operacyjnym Linux-3.16, nie oznacza to, że musisz uruchomić Firefoksa 3, aby przeglądać Internet. Numery wersji to * nie * globalne. –
Nie jest to odpowiedź, ale: * "W indywidualnych przypadkach standardowe moduły biblioteczne, które są również wydawane w formie samodzielnej dla innych wersji Pythona, MOGĄ zawierać numer wersji modułu, jeśli są zawarte w standardowej bibliotece, i POWINIEN BYĆ dołącz numer wersji, gdy jest zapakowany osobno. "* ([źródło] (https://www.python.org/dev/peps/pep-0396/#id25)) – vaultah
Ponadto standardowa biblioteka to zazwyczaj zestaw pakietów z określony numer wersji. Ale rozwój pakietów nadal trwa. Możesz więc zdecydować się na "nocną kompilację" wersji 're', która może dostarczyć pewnych funkcji eksperymentalnych, ale nie jest jeszcze w pełni przetestowana, aby dołączyć ją do standardowej biblioteki. Zazwyczaj standardowa biblioteka ma na celu wybranie wysokiej jakości pakietów, które są mniej lub bardziej niezawodne *. –