Zmienne ze wskazaniem na typ

Zmienne ze wskazaniem na typ
Guaz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Częstochowa
  • Postów: 220
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:

Kopiuj
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?

IK
  • Rejestracja: dni
  • Ostatnio: dni
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.

enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
0

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

Kopiuj
>>> 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.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
0

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

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.