Design von Python: Warum ist assert eine Aussage und keine Funktion?

In Pythonassert ist eine Aussage und keine Funktion. War das eine bewusste Entscheidung? Gibt es irgendwelche Vorteile zu habenassert eine Aussage (und ein reserviertes Wort) anstelle einer Funktion sein?

Gemäßdas docs, assert expression1, expression2 wird erweitert um

if __debug__:
    if not expression1: raise AssertionError(expression2)

In den Dokumenten heißt es außerdem: "Der aktuelle Codegenerator gibt keinen Code für eine Assert-Anweisung aus, wenn zur Kompilierungszeit eine Optimierung angefordert wird." Ohne die Details zu kennen, scheint ein Sonderfall erforderlich zu sein, um dies zu ermöglichen. Ein Sonderfall könnte dann aber auch genutzt werden, um Abwesenheitsanrufe zu optimierenassert() Funktion.

Obassert Wäre eine Funktion, könnte man schreiben:

assert(some_long_condition,
       "explanation")

Aber weilassert ist eine Aussage, die das Tupel immer zu wertetTrueund Sie bekommen

SyntaxWarning: assertion is always true, perhaps remove parentheses?

Die richtige Schreibweise ist

assert some_long_condition, \
       "explanation"

das ist wohl weniger hübsch.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage