Wkrótce zostanie wydany Python 3.6. PEP 494 - Harmonogram wydania Pythona 3.6 wspomina o końcu grudnia, więc przejrzałem Co nowego w Pythonie 3.6, aby zobaczyć, jak wspominają o adnotacjach zmiennych :
PEP 484 wprowadził standard dla adnotacji typu parametrów funkcji, czyli podpowiedzi typu. Ten PEP dodaje składnię do Pythona w celu dodawania adnotacji do typów zmiennych, w tym zmiennych klas i zmiennych instancji:
primes: List[int] = [] captain: str # Note: no initial value! class Starship: stats: Dict[str, int] = {}
Podobnie jak w przypadku adnotacji funkcji, interpreter Pythona nie przypisuje żadnego szczególnego znaczenia adnotacjom zmiennych, a jedynie przechowuje je w specjalnym atrybucie
__annotations__
klasy lub modułu. W przeciwieństwie do deklaracji zmiennych w językach z typami statycznymi, celem składni adnotacji jest zapewnienie łatwego sposobu określania metadanych typu strukturalnego dla narzędzi i bibliotek innych firm za pośrednictwem abstrakcyjnego drzewa składni i__annotations__
atrybutu.
Tak więc z tego, co przeczytałem, są one częścią wskazówek dotyczących typów pochodzących z Pythona 3.5, opisanych w Co to są wskazówki dotyczące typów w Pythonie 3.5 .
Podążam za przykładem captain: str
i class Starship
, ale nie jestem pewien co do ostatniego: Jak to primes: List[int] = []
wyjaśnić? Czy definiuje pustą listę, która będzie zezwalać tylko na liczby całkowite?
primes: List[int] = []
jest po prostu pustą listą jakoprimes = []
. Różnica polega na tym, że twierdzisz, żeprimes
ma zawierać tylkoint
s, a aplikacje innych firm mogą wpisać sprawdź swój program, aby zweryfikować to oświadczenie, ale kiedy uruchamiasz kod w dowolnym interpreterze Pythona, jest to to samo, co pisanieprimes = []
, a zatemprimes: List[int] = []; primes.append("string")
nadal ważny.