430 votes

Quelle est la différence entre une expression et une déclaration en Python ?

En Python, quelle est la différence entre les expressions et les déclarations ?

308voto

Sven Marnach Points 133943

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

32 votes

Les expressions sont piezas de déclarations

67 votes

@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.

2 votes

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.

137voto

dawg Points 26051

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 :

  • Compréhensions de listes sont considérées comme des "Expressions" mais elles ont des constructions en boucle et font donc aussi quelque chose.
  • El 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;
  • Vous pouvez écrire vos propres expressions en écrivant une fonction. 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.
  • Une expression qui renvoie None est une procédure en Python : def proc(): pass Syntaxiquement, vous pouvez utiliser proc() comme une expression, mais c'est probablement un bug...
  • Python est un peu plus strict que le C sur les différences entre une expression et une déclaration. En C, toute expression est une déclaration légale. Vous pouvez avoir 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.

3 votes

"De mon dictionnaire" signifie votre opinion personnelle ou le dictionnaire que vous possédez comme le dictionnaire Oxford ? Merci

3 votes

@Talespin_Kit : ...votre opinion personnelle ou le dictionnaire que vous possédez comme le dictionnaire Oxford ? Bonne question. J'ai utilisé l'application Apple Dictionary sur un Mac qui est basée sur le New Oxford American Dictionary.

130voto

user225312 Points 22699

Bien que cela ne soit pas lié à Python :

Un site expression est évalué à une valeur. A statement fait quelque chose.

>>> x + 2         # an expression
>>> x = 1         # a statement 
>>> y = x + 1     # a statement
>>> print y       # a statement (in 2.x)
2

4 votes

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.

0 votes

@delnan : Pouvez-vous donner un exemple (curieux) ? Je ne suis pas au courant.

0 votes

@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".

34voto

Flavius Points 6115

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.

1 votes

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.

0 votes

class Foo(bar): est le début d'une déclaration, mais pas une déclaration complète.

1 votes

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.

1voto

abifromkerala Points 11

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))

4 votes

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.

0 votes

Non, par exemple. is est un mot-clé mais x is y n'est pas nécessairement une déclaration (en général, il s'agit simplement d'une expression).

Prograide.com

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.

Powered by:

X