python affirmer avec et sans parenthèse

Voici quatre simples invocations d'affirmer:

>>> assert 1==2
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError

>>> assert 1==2, "hi"
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError: hi

>>> assert(1==2)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError

>>> assert(1==2, "hi")

Noter que le dernier ne génère pas d'erreur. Quelle est la différence entre un appel affirmer avec ou sans parenthèses qui provoque ce comportement? Ma pratique est d'utiliser les parenthèses, mais la ci-dessus montre que je ne devrais pas.

  • Merci pour les réponses utiles. La distinction entre les mots clés et les fonctions intégrées semble subtile. Voici une liste des mots clés, pour qui, je présume, les parenthèses ne doit être laissé de côté: docs.python.org/reference/lexical_analysis.html#keywords
  • Une différence est que vous pouvez redéfinir les fonctions intégrées, mais ne peut pas le faire avec des mots-clés (non pas que l'ancien est une bonne idée).
  • Ce n'est pas la fonction vs mot-clé distinction, mais l'appel de la fonction vs déclaration. (par exemple - print, utilisé pour être une déclaration, et a travaillé sans les parenthèses).
InformationsquelleAutor gaefan | 2010-06-24