Błąd składni: nie ma szans


123

Próbowałem wykonać następujący kod w Pythonie IDLE

from __future__ import braces 

Otrzymałem następujący błąd:

SyntaxError: not a chance

Co oznacza powyższy błąd?

Odpowiedzi:


169

Znalazłeś jajko wielkanocne w Pythonie. To żart.

Oznacza to, że ograniczanie bloków nawiasami klamrowymi zamiast wcięć nigdy nie zostanie zaimplementowane.

Zwykle importy ze specjalnego __future__modułu włączają funkcje, które są niekompatybilne wstecz, takie jakprint() funkcja lub prawdziwy podział.

Tak więc linia from __future__ import bracesoznacza, że ​​chcesz włączyć funkcję „twórz bloki z nawiasami klamrowymi”, a wyjątek mówi, że Twoje szanse na to, że kiedykolwiek się to zdarzy, są zerowe.

Można dodać, że do długiej listy In-żartów zawartych w Pythonie, podobnie jak import __hello__, import thisi import antigravity. Programiści Pythona mają dobrze rozwinięte poczucie humoru!


10
Dla ludzi zdziwionych „brak szansy”, które jest slangiem, oznacza to, że nie ma możliwości ani prawdopodobieństwa, że ​​coś się wydarzy.
DOK

Zadaję sobie pytanie, czy teoretycznie byłoby możliwe zaimplementowanie tego - jako rozszerzenia - w Pythonie. (Nie jestem programistą Pythona)
hek2mgl


2
@chepner Less Whitespace, More Enterprise: D Dzięki!
hek2mgl

2
@dumbledad: Haskell, CoffeeScript, Miranda, Occam i F # używają białych znaków w składni. Uwaga: ten wątek komentarzy wymyka się spod kontroli; proszę dołącz do pokoju rozmów Python, jeśli chcesz dyskutować dalej.
Martijn Pieters

29

__future__Moduł jest zwykle używany w celu zapewnienia możliwości przyszłych wersjach z Pythona.

To jest pisanka podsumowująca odczucia twórców w tej kwestii.

Jest jeszcze kilka:

import this wyświetli zen języka Python.

import __hello__wyświetli się Hello World....

W Pythonie 2.7 i 3.0 import antigravityotworzy przeglądarkę do komiksu!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.