Wpis z mikrobloga

@kobrys13: wytłumaczenie jest takie że nie ma powodu by nie dało się stworzyć tupla z jednym elementem, a skłądnia wygląda w ten sposób bo inaczej nie może. Bez przecinka byłaby to zwykla wartość, a nie ma drugiego elementu bo none jest już jakąś wartością, a wprowadzenie dodatkowej specjalnej wartości dla tego jednego featurea jest zbedne
  • Odpowiedz
x = () -> type(x) -> tuple

x = (1) -> type(x) -> int

x = (1,) -> type(x) -> tuple


@kobrys13: fajnie to wygląda, wszystko klarowne i zrozumiałe ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@kobrys13: Czyli czekaj, dobrze rozumiem że #!$%@?łeś literówkę którą ci nawet IntelliJ podświetlał, i jesteś teraz strasznie sfrustrowany bo od rana nad tym siedzisz i dopiero wykminiłeś, więc to wszystko wina Pythona bo ma dodatkowy chromosom? xD
  • Odpowiedz
@a5f5c1: Oczywiście że zrozumiałe. Zamieńmy twój przykład:

x = (1) -> type(x) -> int


na

x = (1+2) -> type(x) -> int


nadal cię dziwi? Czy oczekiwałbyś, żeby dla spójności wynik zwykłej operacji arytmetycznej w nawiasach również był pakowany do tupli?
  • Odpowiedz
Co do wyłapania tego przez unit test - zgadzam się, ale unit testy nie powinny być bezpiecznikiem przed toksyczną gramatyką języka...


@kobrys13: Dlatego, jak już pisało Ci wiele osób w poprzednim wątku, wystarczy używać mypy, nie trzeba pisać UT sprawdzających typy.

Pisanie dużego projektu w pythonie bez type annotation to masochizm.

PS: Python jest językiem typowanym, zarówno silnie jak i dynamicznie ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@kobrys13: ale to nie wina języka, tylko gownianego projektu :P w każdym języku da się pisać gowno-kod. To trochę tak jak mieć projekt w C++ który się zatrzymał na sposobie pisania „C z klasami” i narzekać, że język #!$%@?.
  • Odpowiedz