bardzo podoba mi się pomysł przypisanie null - ale ma nieoczekiwany efekt uboczny:
>>> print divmod(5, 3)
(1, 2)
>>> x, null = divmod(5, 3)
>>> print null
2
dla tych, którzy kod głównie w Pythonie, to prawdopodobnie nie jest to problem: null powinny być po prostu tyle samo wartości śmieciowej co _.
Jednak jeśli przełączanie innych językach takich jak JavaScript, to całkiem możliwe, aby przypadkowo napisać porównanie z wartością null zamiast Żaden. Zamiast wypowiadać zwykły błąd dotyczący porównywania z nieznaną zmienną, Python po cichu zaakceptuje to, a teraz uzyskujesz prawdziwe i fałszywe warunki, których całkowicie nie oczekujesz ... to jest ten rodzaj błędu, w którym patrzysz kod na godzinę i nie może się domyślić, że jest źle, dopóki nie uderzy cię nagle i nie poczujesz się jak idiota.
Oczywistym fix nie działa, albo:
>>> x, None = divmod(5, 3)
File "<stdin>", line 1
SyntaxError: cannot assign to None
... co jest bardzo rozczarowujące. Python (i każdy inny język na świecie) pozwala wszystkie parametrów być niejawnie wyrzucać, niezależnie od tego, ile zmienne są zwracane:
>>> divmod(5, 3)
... ale explicite wyrzucać parametry przypisanie ich do None jest niedozwolone?
To trochę głupie z interpretatora Pythona, aby scharakteryzować przypisanie do Brak jako błędu składni, a nie celowy wybór z jednoznacznym wynikiem. Czy ktokolwiek może pomyśleć o takiej racji?
Co masz na myśli przez "wysłać do strumienia wyjściowego"? – BrenBarn
Ocena samego 'fn()' w zasięgu globalnym spowoduje "wydrukowanie" wartości 5. – PascalVKooten
Jest to prawdą tylko w interpretera interaktywnym. Nie pojawi się, jeśli uruchomisz plik jako skrypt i nie wpłynie to na nic. Nie uważam, że potrzeba tłumienia wyników w sesji interaktywnej jest wystarczająco duża, aby zagwarantować coś więcej niż rozwiązanie, które już posiadasz. – BrenBarn