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: stri 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, żeprimesma zawierać tylkoints, 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.