Wpis z mikrobloga

Mirunie drogie ukochane! Mam pytanie dot. statycznego typowania parametrów w metodach. Przykładowo: mam funkcję func która przyjmuje parametr x. Chciałbym, aby ten parametr mógł być integerem albo floatem.

Gdyby chodziło o samego integera to sprawa jest prosta: def func(x: int). Ale co zrobić w przypadku, gdy chciałbym uwzględnić też float? Domyślam się, że mógłbym w przyjmować x jako ogólnie object i zrobić jakiegoś ifa, ale czy nie ma bardziej eleganckiego sposobu?
#python #programowanie
  • 10
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@SuperStefan: python jest dynamicznie typowany a to to tylko type hints. Jak tam wsadzisz obiekt albo stringa to tylko Ci pycharm podpowie ze mozliwe ze probujesz tam wsadzic nie to co chciales
  • Odpowiedz
ale wiesz, że napisanie def func(x: int) w żaden sposób w pythonie nie wymusza typu argumentu?


o kurde, faktycznie!
@mcnight95: @dese: @daczka92: dzięki wielkie za odpowiedzi! Chciałbym Was przy okazji spytać - jak sobie radzicie z pilnowaniem tego, czy wprowadzona zmienna ma odpowiedni typ? Po prostu ostrożnie czytacie type hints?
  • Odpowiedz
@SuperStefan: Nie piszemy w językach dynamicznie typowanych ( ͡° ͜ʖ ͡°)
A możesz wrzucić na początku metody walidację danych - co prawda wywali się dopiero w runtime i to prawdopodobnie w bardzo dziwnych okolicznościach, ale cóż, taka natura Pythona.
  • Odpowiedz
jak sobie radzicie z pilnowaniem tego, czy wprowadzona zmienna ma odpowiedni typ


@SuperStefan: piszemy z głową, dane pochodzące od użytkownika i tak trzeba sprawdzić i validować, type hinty i pycharm też swoje pomagają, a oprócz tego jeszcze testy i logowanie błędów jak wszystko inne zawiedzie :)
  • Odpowiedz