En Python, quelle est la différence entre les expressions et les déclarations ?
Les expressions sont piezas de déclarations
En Python, quelle est la différence entre les expressions et les déclarations ?
Expressions contiennent uniquement identifiants , littéraux y opérateurs où les opérateurs comprennent les opérateurs arithmétiques et booléens, la fonction opérateur téléphonique ()
le site opérateur de souscription []
et similaires, et peuvent être réduits à une sorte de "valeur", qui peut être n'importe quel objet Python. Exemples :
3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7
Déclarations (voir 1 , 2 ), d'autre part, sont tout ce qui peut constituer une ligne (ou plusieurs lignes) de code Python. Notez que les expressions sont également des déclarations. Exemples :
# all the above expressions
print 42
if x: do_y()
return
a = 7
@bismigalis : Chaque expression Python valide peut être utilisée comme une déclaration (appelée un "déclaration d'expression" ). Dans ce sens, les expressions sont déclarations.
Les expressions peuvent également inclure des appels de fonctions (y compris l'appel de classes pour l'instanciation d'objets). Techniquement, il s'agit d'"identificateurs", exactement comme les noms liés aux valeurs dans une instruction = ... même si la liaison se fait par le biais des mots-clés "def" ou "class". Toutefois, pour cette réponse, j'expliciterai séparément les appels de fonction pour que cela soit clair.
Expression -- du Nouveau dictionnaire américain Oxford :
expression : Mathématiques une collection de symboles qui expriment conjointement une quantité : l'expression de la circonférence d'un cercle est 2r.
En termes généraux bruts : Les expressions produisent au moins une valeur.
En Python, les expressions sont traitées de manière approfondie dans le module Référence du langage Python En général, les expressions en Python sont composées d'une combinaison syntaxiquement légale de Atomes , Primaires y Opérateurs .
Expressions Python de Wikipedia
Exemples d'expressions :
Littéraux et des combinaisons syntaxiquement correctes avec Opérateurs y fonctions intégrées ou l'appel d'une fonction écrite par l'utilisateur :
>>> 23
23
>>> 23l
23L
>>> range(4)
[0, 1, 2, 3]
>>> 2L*bin(2)
'0b100b10'
>>> def func(a): # Statement, just part of the example...
... return a*a # Statement...
...
>>> func(3)*4
36
>>> func(5) is func(a=5)
True
Déclaration de Wikipedia :
En programmation informatique, une déclaration peut être considérée comme le plus petit élément autonome d'un langage de programmation langage de programmation impératif. Un programme est formé par une séquence d'une ou plusieurs instructions. Une instruction possède des composants internes (par ex, des expressions).
Déclarations Python de Wikipedia
En termes généraux bruts : Déclarations Faites quelque chose et sont souvent composés d'expressions (ou d'autres déclarations)
La référence du langage Python couvre Déclarations simples y Déclarations composées de manière extensive.
La distinction entre "les déclarations font quelque chose" et "les expressions produisent une valeur" peut toutefois devenir floue :
if
est généralement une déclaration, telle que if x<0: x=0
mais vous pouvez aussi avoir un expression conditionnelle comme x=0 if x<0 else 1
qui sont des expressions. Dans d'autres langages, comme le C, cette forme est appelée un opérateur, comme ceci x=x<0?0:1;
def func(a): return a*a
est une expression lorsqu'elle est utilisée mais est composée d'énoncés lorsqu'elle est définie.None
est une procédure en Python : def proc(): pass
Syntaxiquement, vous pouvez utiliser proc()
comme une expression, mais c'est probablement un bug...func(x=2);
Est-ce une expression ou une déclaration ? ( Réponse : Expression utilisée comme une déclaration avec un effet secondaire. ) L'instruction d'affectation de x=2
à l'intérieur de l'appel de fonction de func(x=2)
en Python définit l'argument nommé a
à 2 seulement dans l'appel à func
et est plus limité que l'exemple C.
"De mon dictionnaire" signifie votre opinion personnelle ou le dictionnaire que vous possédez comme le dictionnaire Oxford ? Merci
Mais notez que dans tous les langages, à l'exception des langages vraiment très "purs", les expressions peuvent "faire quelque chose" (plus formellement : avoir un effet secondaire) tout aussi bien.
@A A : Exemple facile : sys.stdout.write('see?\n')
(plus facile en 3.x où print est une fonction et peut donc être appelé comme partie d'une expression). A moins bien sûr que vous ayez une définition très spéciale de "fait quelque chose".
Une expression est quelque chose qui peut être réduite à une valeur, par exemple "1+3"
est une expression, mais "foo = 1+3"
es no .
C'est facile à vérifier :
print(foo = 1+3)
Si ça ne marche pas, c'est une déclaration, si ça marche, c'est une expression.
Une autre déclaration pourrait être :
class Foo(Bar): pass
car elle ne peut être réduite à une valeur.
Comme le montre l'exécution de votre premier exemple, l'affectation est no une expression (pas vraiment, c'est-à-dire - a = b = expr
est autorisé, comme un cas particulier) en Python. Dans les langages s'inspirant davantage du C, il l'est.
foo = 1+3
n'est PAS une expression. C'est une déclaration (une affectation pour être précis). La partie 1+3
est pourtant une expression.
Une déclaration contient un mot-clé.
Une expression ne contient pas de mot-clé.
print "hello"
est une déclaration, car print
est un mot-clé.
"hello"
est une expression, mais la compression de liste s'y oppose.
L'énoncé suivant est une expression, et il est vrai sans compréhension de liste :
(x*2 for x in range(10))
Cela dépend fortement de votre définition d'un "mot-clé". x = 1
est une déclaration tout à fait correcte, mais elle ne contient pas de mots-clés.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.