Ich habe festgestellt, dass Python-Grammatik ermöglicht Rückkehr Anweisung außerhalb der Funktion erscheinen, aber ich verstehe wirklich nicht, warum? Ich glaube, dass man Grammatik so spezifizieren kann, dass dies nicht erlaubt wäre. Python Grammatik Ende "Rückkehr außerhalb der Funktion"
Dies ist ein Stück von Python Grammatik, die dieses ermöglicht:
single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
import_stmt | global_stmt | nonlocal_stmt | assert_stmt)
flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
return_stmt: 'return' [testlist]
Auch die Dolmetscher Berichte diese als Syntaxfehler (‚return‘ außerhalb Funktion), aber wie kann es Parser erkennen, wenn dies nicht der Fall ist in der Grammatik angegeben?
Ich habe noch nie davon gehört, aber wo in Ihrem Beispiel gibt es eine Return-Anweisung außerhalb einer Funktion? – Julien
Nun, aus dieser Grammatik haben wir: single_input => simple_stmt => small_stmt NEWLINE => flow_stmt NEWLINE => return_stmt NEWLINE => 'return' NEWLINE. Da single_input ein Startsymbol für die Grammatik ist (wie es in Python-Dokumenten erwähnt wird), haben wir dies. –