différence entre les instructions (instructions) et les expressions (expressions) en Python

Contexte

Il y a lecture dans mes devoirs d'école, donc si je le lis, je rencontre les concepts des «expressions» et des «déclarations». Même si je l'ai lu, la différence n'est pas si claire, j'ai donc décidé d'enquêter. ~~ Je crois que le côté école ne me dit pas de lire autant et de tout comprendre ... ~~

déf.de déclarations et d'expressions

La définition par lecture est

Statements typically describe actions. When the Python interpreter executes a statement, it carries out the corresponding action.

Cela signifie-t-il «x = 1» ou «y =« pomme »»? C'était mon interprétation, mais stackoverflow

Expressions only contain identifiers, literals and operators, where operators include arithmetic and boolean operators, the function call operator () the subscription operator [] and similar, and can be reduced to some kind of "value", which can be any Python object. Statements (see 1, 2), on the other hand, are everything that can make up a line (or several lines) of Python code.

Cela signifie que les «expressions» peuvent également être considérées comme des «déclarations». Bien qu'il puisse être complété avec juste ʻexpression, statement` (ce qui vous fait réfléchir davantage lorsque vous lisez cette zone) L'impression est que cela fonctionne bien avec d'autres blocs. Il y a presque certainement une «expression» dans la «déclaration».

Depuis quora

A statement is a complete line of code that performs some action, while an expression is any section of the code that evaluates to a value. Expressions can be combined “horizontally” into larger expressions using operators, while statements can only be combined “vertically” by writing one after another, or with block constructs. Every expression can be used as a statement (whose effect is to evaluate the expression and ignore the resulting value), but most statements cannot be used as expressions.

De plus, la réponse à l '«expression» de ce stackoverflow était facile à comprendre.

Expressions represent something, like a number, a string, or an instance of a class. Any value is an expression! Anything that does something is a statement. Any assignment to a variable or function call is a statement. Any value contained in that statement in an expression.

foo = "hello" is a statement that assigns foo to the value of the expression "hello". Since the code "hello" is a simple expression, meaning it contains no operations, nothing is actually evaluated, so foo is just assigned to "hello". More complex expressions actually evaluate things, like adding numbers. Using the word expression seems like it is making things more confusing. Expressions are nothing but values, except they can have operations like addition or subtraction.

eval evaluates the string as if it were a python expression. Eval does takes an expression as an argument. However, there's nothing special about this since every single value is an expression. Saying "eval takes a value as an argument" is saying exactly the same thing, but it sounds much simpler. :D eval( "2+2" ) passes the string "2+2" to the function. The function evaluates the expression contained in the string, which comes out to 4.

The book by Zelle says eval() evaluates string as an expression, what does that exactly mean if string is already an expression?

Any string is an expression since it represents a value. However, what is in the string has absolutely no impact on it being an expression. If its a value, its an expression. When it is "evaluated as an expression by eval", the characters inside the string are executed as if they were a python expression.

De plus, ici

Une phrase est un élément linguistique qui se complète tout seul. Une expression est un élément linguistique qui est fondamentalement incomplet en soi et qui est utilisé dans le cadre d'une déclaration ou d'une expression. En outre, la plus grande caractéristique de l'expression est qu'elle renvoie une valeur (l'instruction ne renvoie pas de valeur). Par exemple, une expression constante renvoie la valeur elle-même. Une expression conditionnelle est une expression qui renvoie une valeur booléenne (True / False). Il existe une expression de comparaison comme l'une des expressions conditionnelles, mais comme l'expression conditionnelle elle-même peut être n'importe quoi tant qu'elle renvoie Vrai / Faux, un simple Boolean True (expression constante) est également une expression conditionnelle. L'expression de comparaison peut être une expression conditionnelle car elle compare les expressions sur les côtés gauche et droit avec un opérateur de comparaison entre les deux et renvoie le résultat sous la forme True / False.

Au fait, __ʻevaluate argument signifie simplement "appeler la fonction" __. Cela se produit lorsque vous passez l'argument entre parenthèses de la fonction. __ʻEvaluate function est différent de "call function" __. Cela a été simplement défini comme ayant une fonction. Ainsi, l'ordre correct est ʻévaluer la fonction → ʻévaluer l'argumentla fonction est appelée.

Postscript

Même si je n'ai pas pris la peine de le chercher, il a été présenté dans la prochaine Conférence, donc pour le moment (rires)

an expression describes a computation and evaluates to a value. all expressions can use function call notation

Chaque «expression d'appel» appelée «add (2, 3)» est également une «expression». ʻAdd est appelé ʻoperator, et celui à l'intérieur () ʻest appelé ʻoperand. L '«expression d'appel» reconnaît d'abord «opérateur» et «opérande», traite «l'opérande» comme «argument», et utilise «fonction» pour afficher la «valeur». À propos, bien que cela soit évident, cela peut également être exprimé par «2 + 3». La conversion de ʻadd (2,3) en 2 + 3` est appelée __ sucre syntactique __. De plus, les signes «+, *, - ou /» utilisés en mathématiques sont appelés notation __infix __.

C'est exactement le même que ci-dessus, mais il a également été décrit dans ici, donc il est partiellement réimprimé.

Executing x = 2 does not return a value nor evaluate a function on some arguments, since the purpose of assignment is instead to bind a name to a value. In general, statements are not evaluated but executed; they do not produce a value but instead make some change. Each type of expression or statement has its own evaluation or execution procedure.

Addendum # 2

Réimprimé à partir de la section "Déclarations" de la lecture

Expressions can also be executed as statements, in which case they are evaluated, but their value is discarded. Executing a pure function has no effect, but executing a non-pure function can cause effects as a consequence of function application.

ref: Différence entre une fonction pure et une fonction non pure

def square(x):
    mul(x, x)# Watch out! This call doesn't return a value.

«L'expression» est traitée de la même manière que «instruction», mais «value» n'est pas affichée. Par conséquent, nous émettons «value» avec «assignment, def et return».

Addendum # 3

J'ai personnellement fait un schéma simple basé sur l'explication du professeur de «expression» et «déclaration» dans une conférence ultérieure, donc pour référence.

Screen Shot 2016-01-31 at 2.18.24 AM.png

Recommended Posts

différence entre les instructions (instructions) et les expressions (expressions) en Python
Différence entre list () et [] en Python
Différence entre == et est en python
Différence entre @classmethod et @staticmethod en Python
Différence entre append et + = dans la liste Python
Différence entre non local et global en Python
[python] Différence entre variable et self. Variable dans la classe
À propos de la différence entre "==" et "is" en python
Différence entre Ruby et Python en termes de variables
Différence entre return, return None et no return description en Python
Différence entre Ruby et Python Split
Différence entre java et python (mémo)
Différence entre la série python2 et la série python3 dict.keys ()
[Python] Différence entre fonction et méthode
Python - Différence entre exec et eval
[Python] Différence entre randrange () et randint ()
[Python] Différence entre trié et trié (Colaboratoire)
Module Python num2words Différence de comportement entre l'anglais et le russe
Méthode de concaténation de liste en python, différence entre list.extend () et opérateur «+»
Chevauchement d'expressions régulières en Python et Java
Différence d'authenticité entre Python et JavaScript
Différences entre Ruby et Python dans la portée
Différences entre la syntaxe Python et Java
Différences dans la relation entre PHP et Python enfin et quitter
[Python] Différence entre la méthode de classe et la méthode statique
[Python Iroha] Différence entre List et Tuple
[python] Différence entre la sortie rand et randn
Différences de multithreading entre Python et Jython
Fonction pour ouvrir un fichier en Python3 (différence entre open et codecs.open et comparaison de vitesse)
Expression de régression multiple en Python
Différence entre processus et travail
Différence entre "categorical_crossentropy" et "sparse_categorical_crossentropy"
Trouver des erreurs en Python
Différence entre régression et classification
[python] Calcul des mois et des années de différence de date / heure
Envelopper de longues expressions en python
Pile et file d'attente en Python
Conversion mutuelle entre JSON et YAML / TOML en Python
À propos de Python et des expressions régulières
Différence entre np.array et np.arange
Différence entre MicroPython et CPython
Unittest et CI en Python
Différences dans la façon d'écrire du code source externe entre Ruby et Python
Comparez la "relation log et infini" avec Gauche (0.9.4) et Python (3.5.1)
Différence entre ps a et ps -a
Différence entre return et print-Python
[Python] Explique la différence entre strftime et strptime dans le module datetime avec un exemple
Installez OpenCV 3 (core + contrib) dans l'environnement Windows et Python 3 et différence entre OpenCV 2 et OpenCV 3 et contrôle de fonctionnement facile
Python> Différence entre la sortie inpbt et print (inpbt)> [1. 2. 3.] / array ([1., 2., 3.], dtype = float32)
Astuces utiles liées à la liste et aux instructions en Python
Obtenez la date et l'heure actuelles en Python, en tenant compte du décalage horaire
Inclusions de tapple Python et expressions de générateur
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre SQLAlchemy filter () et filter_by ()
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
Mémorandum (différence entre csv.reader et csv.dictreader)
Manipuler des fichiers et des dossiers en Python