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 ... ~~
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. :Deval( "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'argument
→ la fonction est appelée
.
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.
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».
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.
Recommended Posts