¿Cuál es la diferencia entre una expresión y una statement en Python?

En Python, ¿cuál es la diferencia entre expresiones y declaraciones?

Las expresiones solo contienen identificadores , literales y operadores , donde los operadores incluyen operadores aritméticos y booleanos, el operador de llamada a función () el operador de suscripción [] y similares, y pueden reducirse a algún tipo de “valor”, que puede ser cualquier objeto Python. Ejemplos:

 3 + 5 map(lambda x: x*x, range(10)) [ax for a in some_iterable] yield 7 

Las declaraciones (ver 1 , 2 ), por otro lado, son todo lo que puede formar una línea (o varias líneas) de código de Python. Tenga en cuenta que las expresiones son también declaraciones. Ejemplos:

 # all the above expressions print 42 if x: do_y() return a = 7 

Expresión – de mi diccionario:

expresión: Matemáticas una colección de símbolos que expresan conjuntamente una cantidad: la expresión para la circunferencia de un círculo es 2πr.

En términos generales brutos: las expresiones producen al menos un valor.

En Python, las expresiones se tratan ampliamente en la Referencia del lenguaje de Python. En general, las expresiones en Python se componen de una combinación sintácticamente legal de átomos , primarios y operadores .

Expresiones de Python de Wikipedia

Ejemplos de expresiones:

Literales y combinaciones sintácticamente correctas con operadores y funciones integradas o la llamada de funciones escritas por el usuario:

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

Declaración de Wikipedia:

En la progtwigción de computadoras, una statement puede considerarse como el elemento independiente más pequeño de un lenguaje de progtwigción imperativo. Un progtwig está formado por una secuencia de una o más declaraciones. Una statement tendrá componentes internos (por ejemplo, expresiones).

Declaraciones de Python de Wikipedia

En términos generales: las declaraciones hacen algo y, a menudo, se componen de expresiones (u otras declaraciones)

La referencia del lenguaje de Python cubre declaraciones simples y declaraciones compuestas extensivamente.

Sin embargo, la distinción de “Las declaraciones hacen algo” y la distinción de “las expresiones producen un valor” puede volverse borrosa:

  • Las Comprensiones de lista se consideran “Expresiones” pero tienen construcciones en bucle y, por lo tanto, también hacen algo.
  • El if es generalmente una statement, como if x<0: x=0 pero también puede tener una expresión condicional como x=0 if x<0 else 1 que son expresiones. En otros idiomas, como C, esta forma se llama un operador como este x=x<0?0:1;
  • Puedes escribir tus propias expresiones escribiendo una función. def func(a): return a*a es una expresión cuando se usa pero está compuesta de sentencias cuando está definida.
  • Una expresión que devuelve None es un procedimiento en Python: def proc(): pass Sintácticamente, puede usar proc() como una expresión, pero probablemente sea un error ...
  • Python es un poco más estricto de lo que dice C sobre las diferencias entre una expresión y una statement. En C, cualquier expresión es una statement legal. Puedes tener func(x=2); ¿Es eso una expresión o statement? ( Respuesta: Expresión utilizada como una Declaración con un efecto secundario ) . La func(x=2) form func(x=2) es ilegal en Python (o al menos tiene una func(a=3) significado diferente func(a=3) establece el argumento nombrado a a 3)

Aunque esto no está relacionado con Python:

Una expression evalúa a un valor. Una statement hace algo.

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

Las declaraciones representan una acción o comando, por ejemplo , instrucciones de impresión, instrucciones de asignación.

 print 'hello', x = 1 

La expresión es una combinación de variables, operaciones y valores que produce un valor de resultado.

 5 * 5 # yields 25 

Por último, las expresiones de expresión.

 print 5*5 
  1. Una expresión es una statement que devuelve un valor. Entonces, si puede aparecer en el lado derecho de una asignación, o como un parámetro para una llamada de método, es una expresión.
  2. Algunos códigos pueden ser tanto una expresión como una statement, dependiendo del contexto. El lenguaje puede tener un medio para diferenciar entre los dos cuando son ambiguos.

Una expresión es algo que se puede reducir a un valor, por ejemplo "1+3" o "foo = 1+3" .

Es fácil de verificar:

 print foo = 1+3 

Si no funciona, es una statement, si lo hace, es una expresión.

Otra afirmación podría ser:

 class Foo(Bar): pass 

ya que no se puede reducir a un valor.

Una expresión es algo, mientras que una statement hace algo.
Una expresión es una statement también, pero debe tener una devolución.

 >>> 2 * 2        #expression >>> print(2 * 2)     #statement 

PD: El intérprete siempre imprime los valores de todas las expresiones.

Una statement contiene una palabra clave.

Una expresión no contiene una palabra clave.

print "hello" es una statement, porque print es una palabra clave.

"hello" es una expresión, pero la compresión de listas está en contra de esto.

La siguiente es una statement de expresión, y es verdadera sin la comprensión de la lista:

 (x*2 for x in range(10)) 

Expresiones:

  • Las expresiones se forman combinando objects y operators .
  • Una expresión tiene un valor, que tiene un tipo.
  • Sintaxis para una expresión simple:

2.0 + 3 es una expresión que se evalúa a 5.0 y tiene un tipo float asociado.

Declaraciones

Las declaraciones están compuestas de expresión (s). Puede abarcar múltiples líneas.

DECLARACIÓN:

Una statement es una acción o un comando que hace algo. Ej: If-Else, Loops..etc

 val a: Int = 5 If(a>5) print("Hey!") else print("Hi!") 

EXPRESIÓN:

Una expresión es una combinación de valores, operadores y literales que produce algo.

 val a: Int = 5 + 5 #yields 10 

Python llama expresiones “declaraciones de expresión”, por lo que la pregunta quizás no esté completamente formada.

Una statement consiste en casi todo lo que puede hacer en Python: calcular un valor, asignar un valor, eliminar una variable, imprimir un valor, regresar de una función, generar una excepción, etc. La lista completa está aquí: http: // docs.python.org/reference/simple_stmts.html#

Una statement de expresión se limita a las funciones de llamada (por ejemplo, math.cos (theta) “), operadores (por ejemplo,” 2 + 3 “), etc. para producir un valor.

Creo que una expresión contiene operadores + operandos y el objeto que contiene el resultado de la operación … por ejemplo,

 var sum = a + b; 

pero una statement es simplemente una línea de un código (puede ser una expresión) o un bloque de código … por ejemplo,

 fun printHello(name: String?): Unit { if (name != null) println("Hello ${name}") else println("Hi there!") // `return Unit` or `return` is optional 

}