Python déclenche une NameError qu'il rencontre toute référence à un nom (jeton qui est une variable valide/classe/fonction/nom de l'objet) pour lequel il n'y avait pas de liaison précédente.
L'interpréteur Python exécute le code source d'un fichier lors de sa lecture.Ainsi, def foo():
est en réalité une instruction qui définit foo()
lorsque le code est en cours de chargement.
Il est facile de penser que les références directes sont supportées. Considérez ceci:
def foo():
return abc
abc="FooBar, Dude"
print foo()
... et vous verrez qu'il peut être exécuté sans problèmes. Il est préférable de penser à la définition de foo()
comme étant citée. Le contenu n'est pas évalué tant que la fonction n'est pas appelée. L'erreur NameError n'est donc pas levée (tant que certaines valeurs ont été liées au nom "abc" avant l'appel de la fonction.)
Notez que certaines de ces sémantiques sont suffisamment différentes de celles de Java, C/C++, et Perl que les Pythonistes préfèrent souvent utiliser une terminologie légèrement différente Les variables et autres sont appelés "noms" et le processus d'association de ceux avec des valeurs (ou, plus généralement, des objets) est appelé "liaison". "attribuer des valeurs aux variables" vous "liez les objets aux noms"
Les noms, en particulier pour les objets numériques simples ou de chaîne, sont appelés "variables" et les instructions telles que x='foo'
sont appelées des affectations. assez similaire que nous w on s'en fout.
Salut. Je me demandais s'il y avait un moyen d'utiliser le style # 1 pour les fonctions qui acceptent les arguments. merci – Pradyot
Pradyot: Utilisez * args et * kwargs. abc = lambda * args, ** kwargs: myFunction (* args, ** kwargs) –