Wpis z mikrobloga

#it #programowanie #programista15k

Witam Panowie, czy ktoś jest zaznajomiony ze statycznym typowaniem w Pythonie? Na przykładzie takiej kompletnie bezsensownej funkcji:

def returnint(a:str) -> int:
if a=='1':
return 1
else:
return None

c=return
int(['foo'])
print(c)

Czy w tym kodzie jest jakiś błąd, czy zwyczajnie nie da się zmusić Pythona do wyrzucenia błędu w tym wypadku? Argument funkcji wyraźnie annotuje jako string, więc czemu w momencie kiedy jest listą i tak dostaje None?
EDIT: nie umiem into formatowanie w vikop ale intendacja jest dobra :)
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

A wywolujesz funkcje gdzies dalej? Ten zapis a:str) -> int:
Nie jest poprawny.
Dlaczdego masz zmienna a ktorej nigdzie nie uzywasz a potem printujesz zmienna c xD?
  • Odpowiedz
@gelu100: w jakim sensie nie jest poprawny? Nie tak się annotuje typy ? Zmienna a jest argumentem funkcji return_int tylko intendacja się wysrala przez vikop
@bm9pY2h1ag: no masz rację ale można określić typ zmiennych jakie przyjmuje funkcja i typ zmiennych jakie zwraca, statyczne typowanie to skrót myślowy
  • Odpowiedz
@bussior: type hints/annotations są ignorowane przez interpreter pythona, sprawiają tylko, że kod jest czytelniejszy i taki był cel ich wprowadzenia (podany typ argumentu często więcej mówi niż opis w docstringu lub po prostu dobrze go uzupełnia); python nie ma statycznego typowania z prawdziwego zdarzenia
  • Odpowiedz
@Datun: Ok czyli nawet jeśli użyję takiej składni to python zadziała jak Python, a jedyne co zyskam to podpowiedzi do syntaxu? Co za tym idzie, żeby wymusić zwrotkę konkretnego typu danych muszę zrobić to "customowo"?
  • Odpowiedz