Zmienne ze wskazaniem na typ

0

Hej, odkryłem coś w pythonie, nie wiem czy to coś nowego, czy po prostu nie jest spotykane.
(Nie wykluczam możliwości że weszło to w pythonie3.6 bo aktualnie to testuje)
Stąd pojawia się kilka moich pytań, może ktoś zechce udzielić mi odpowiedzi :).

Precyzowanie typów zmiennych, które jest powszechne w wielu innych językach:

string: str = "jakiś napis"
string = 0 #możliwa jest zmiana tego typu w normalny sposób
string: str #możliwa jest inicjalizacja bez nadania domyślnej wartości
string: int = 0 #możliwa jest zmiana typu nawet w jawny sposób
string = "jakiś napis"
def do_some(a: str):
    print(a) #jakiś napis
do_some(string)
a: int = 0.3 #To nie rzutuje wartości, umożliwia takie 'pranki'
print(a) #0.3
print(type(a)) #<class 'float'>  

Wszystkie są poprawne według interpretera, i tu pojawia się kilka moich pytań:
#1: Czy to przyśpiesza działanie Pythona?
#2: Czy jeśli przyspiesza działanie, stosowanie tego wskazania na typ musi odnosić się w każdym miejscu?
#3: Czy jest to zalecany, bądź raczej niezalecany zapis?

0
  1. nie
  2. nie
  3. zależy od projektu

Polecam lekturę: http://mypy.readthedocs.io/en/latest/index.html i https://www.python.org/dev/peps/pep-0484/
Ogólnie w runtime nic to nie zmienia.

0

Jakbyś przyjrzał się jeszcze uważniej, zauważyłbyś taki fenomen:

>>> string: str
>>> type(string)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'string' is not defined

Innymi słowy, tak naprawdę to nie ma tutaj żadnej "inicjalizacji", ba, to naprawdę nie wpływa na typ zmiennej.

0

Pep chyba tłumaczy dokładnie, zwłaszcza tutaj: https://www.python.org/dev/peps/pep-0484/#non-goals

0

To jest świetne dla narzędzi do refaktoryzacji. Teraz dobrze napisany kod powinien się refaktorować nie psując działania aplikacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1