Python3 Operadores


¿Qué es un operador?

Este capítulo explica principalmente los operadores de Python.

Pon un ejemplo sencillo:

4 + 5 = 9

En el ejemplo,4y5se llamaoperando,+se llamaoperador。

El lenguaje Python admite los siguientes tipos de operadores:

A continuación, aprendamos uno por uno los operadores de Python.


Operadores aritméticos de Python

A continuación, supongamos que la variablea=10, variableb=21:

OperadorDescripciónEjemplo
+Suma - suma dos objetosa + b da como resultado 31
-Resta - obtiene un número negativo o resta un número de otroa - b da como resultado -11
*Multiplicación - multiplica dos números o devuelve una cadena repetida un cierto número de vecesa * b da como resultado 210
/División - x dividido entre yb / a da como resultado 2.1
%Módulo - devuelve el resto de la divisiónb % a da como resultado 1
**Potencia - devuelve x elevado a la potencia ya**b es 10 elevado a 21
//División entera - redondea hacia abajo al entero menor
>>> 9//2
4
>>> -9//2
-5

El siguiente ejemplo demuestra las operaciones de todos los operadores aritméticos de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - el valor de c es:", c) c = a - b print ("2 - el valor de c es:", c) c = a * b print ("3 - el valor de c es:", c) c = a / b print ("4 - el valor de c es:", c) c = a % b print ("5 - el valor de c es:", c) # Modificar las variables a, b, c a = 2 b = 3 c = a**b print ("6 - el valor de c es:", c) a = 10 b = 5 c = a//b print ("7 - el valor de c es:", c)

El resultado del ejemplo anterior es:

1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2

Operadores de comparación de Python

Supongamos que la variable a es 10 y la variable b es 20:

OperadorDescripciónEjemplo
==Igual que - compara si los objetos son iguales(a == b) devuelve False.
!=Distinto de - compara si dos objetos no son iguales(a != b) devuelve True.
>Mayor que - devuelve si x es mayor que y(a > b) devuelve False.
<Menor que - devuelve si x es menor que y. Todos los operadores de comparación devuelven 1 para verdadero y 0 para falso. Esto equivale a las variables especiales True y False, respectivamente. Nótese que estos nombres de variables están en mayúsculas.(a < b) devuelve True.
>=Mayor o igual que - devuelve si x es mayor o igual que y.(a >= b) devuelve False.
<=Menor o igual que - devuelve si x es menor o igual que y.(a <= b) devuelve True.

El siguiente ejemplo demuestra las operaciones de todos los operadores de comparación de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 if ( a == b ): print ("1 - a es igual a b") else: print ("1 - a no es igual a b") if ( a != b ): print ("2 - a no es igual a b") else: print ("2 - a es igual a b") if ( a < b ): print ("3 - a es menor que b") else: print ("3 - a es mayor o igual que b") if ( a > b ): print ("4 - a es mayor que b") else: print ("4 - a es menor o igual que b") # Modificar los valores de las variables a y b a = 5 b = 20 if ( a <= b ): print ("5 - a es menor o igual que b") else: print ("5 - a es mayor que b") if ( b >= a ): print ("6 - b es mayor o igual que a") else: print ("6 - b es menor que a")

El resultado del ejemplo anterior es:

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a

Operadores de asignación de Python

Supongamos que la variable a es 10 y la variable b es 20:

OperadorDescripciónEjemplo
=Operador de asignación simplec = a + b asigna el resultado de a + b a c
+=Operador de asignación con sumac += a equivale a c = c + a
-=Operador de asignación con restac -= a equivale a c = c - a
*=Operador de asignación con multiplicaciónc *= a equivale a c = c * a
/=Operador de asignación con divisiónc /= a equivale a c = c / a
%=Operador de asignación con móduloc %= a equivale a c = c % a
**=Operador de asignación con potenciac **= a equivale a c = c ** a
//=Operador de asignación con división enterac //= a equivale a c = c // a
:=Operador morsa (walrus), el propósito principal de este operador es realizar una asignación y devolver el valor asignado al mismo tiempo en una expresión.Operador nuevo en la versión Python 3.8。

En este ejemplo, la expresión de asignación evita llamar a len() dos veces:

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

El siguiente ejemplo demuestra las operaciones de todos los operadores de asignación de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - el valor de c es:", c) c += a print ("2 - el valor de c es:", c) c *= a print ("3 - el valor de c es:", c) c /= a print ("4 - el valor de c es:", c) c = 2 c %= a print ("5 - el valor de c es:", c) c **= a print ("6 - el valor de c es:", c) c //= a print ("7 - el valor de c es:", c)

El resultado del ejemplo anterior es:

1 - c 的值为: 31
2 - c 的值为: 52
3 - c 的值为: 1092
4 - c 的值为: 52.0
5 - c 的值为: 2
6 - c 的值为: 2097152
7 - c 的值为: 99864

En Python 3.8 y versiones posteriores, se introdujo una nueva característica de sintaxis llamada "operador morsa" (Walrus Operator), que usa:=símbolo. El propósito principal de este operador es realizar una asignación y devolver el valor asignado al mismo tiempo en una expresión.

Usar el operador morsa puede simplificar el código en algunos casos, especialmente cuando se necesita utilizar el resultado de una asignación dentro de una expresión. Esto es útil para simplificar las condiciones de bucle o los cálculos repetidos en expresiones.

A continuación se muestra un ejemplo sencillo que demuestra el uso del operador morsa:

Ejemplo

# Escritura tradicional
n = 10
if n > 5:
    print(n)

# Usando el operador morsa
if (n := 10) > 5:
    print(n)
  • if (n := 10) > 5:: Esto es usando el operador morsa (:=). El operador morsa realiza una asignación dentro de una expresión.
    • (n := 10): Asigna la variablenasignándola a 10, y devuelve el resultado de esta asignación.
    • > 5: Comprueba si después de la asignaciónnes mayor que 5. Si la condición es verdadera, se ejecuta el siguiente bloque de código.
  • print(n): Si la condición es verdadera, imprime el valor de la variablen(es decir, 10).

Ventajas del operador morsa:

  • El operador morsa (:=) permite realizar asignaciones dentro de expresiones, lo que puede reducir la repetición de código y mejorar la legibilidad y concisión del código.
  • En el ejemplo anterior, la escritura tradicional necesita una línea separada para asignarn, y luegoifrealizar la comprobación de la condición en la sentencia. Sin embargo, la escritura con el operador morsa puedeifrealizar la asignación y la comprobación de la condición directamente en la sentencia.

Operadores de bits de Python

Los operadores de bits tratan los números como binarios para realizar cálculos. Las reglas de las operaciones de bits en Python son las siguientes:

En la siguiente tabla, la variable a es 60 y b es 13. El formato binario es el siguiente:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
OperadorDescripciónEjemplo
&Operador Y bit a bit: de los dos valores que participan en la operación, si los dos bits correspondientes son 1, el resultado de ese bit es 1; de lo contrario, es 0.(a & b) da como resultado 12, explicación binaria: 0000 1100
|Operador O bit a bit: si al menos uno de los dos bits correspondientes es 1, el bit de resultado es 1.(a | b) da como resultado 61, explicación binaria: 0011 1101
^Operador O exclusivo (XOR) bit a bit: cuando los dos bits correspondientes son diferentes, el resultado es 1.(a ^ b) da como resultado 49, explicación binaria: 0011 0001
~Operador de complemento bit a bit: invierte cada bit binario de los datos, es decir, convierte 1 en 0 y 0 en 1.~x, similar-x-1 (~a) da como resultado -61, explicación binaria: 1100 0011, en forma de complemento a dos de un número binario con signo.
<<Operador de desplazamiento a la izquierda: desplaza todos los bits binarios del operando a la izquierda un cierto número de posiciones; el número a la derecha de "<<" especifica la cantidad de posiciones a desplazar, se descartan los bits altos y se rellenan con 0 los bits bajos.a << 2 da como resultado 240, explicación binaria: 1111 0000
>>Operador de desplazamiento a la derecha: desplaza todos los bits binarios del operando a la izquierda de ">>" a la derecha un cierto número de posiciones; el número a la derecha de ">>" especifica la cantidad de posiciones a desplazar.a >> 2 da como resultado 15, explicación binaria: 0000 1111

El siguiente ejemplo demuestra las operaciones de todos los operadores bit a bit de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b # 12 = 0000 1100 print ("1 - el valor de c es:", c) c = a | b # 61 = 0011 1101 print ("2 - el valor de c es:", c) c = a ^ b # 49 = 0011 0001 print ("3 - el valor de c es:", c) c = ~a # -61 = 1100 0011 print ("4 - el valor de c es:", c) c = a << 2 # 240 = 1111 0000 print ("5 - el valor de c es:", c) c = a >> 2 # 15 = 0000 1111 print ("6 - el valor de c es:", c)

El resultado del ejemplo anterior es:

1 - c 的值为: 12
2 - c 的值为: 61
3 - c 的值为: 49
4 - c 的值为: -61
5 - c 的值为: 240
6 - c 的值为: 15

Operadores lógicos de Python

El lenguaje Python admite operadores lógicos. A continuación se supone que la variable a es 10 y b es 20:

OperadorExpresión lógicaDescripciónEjemplo
andx and y"Y" booleano: si x es False, x and y devuelve el valor de x; de lo contrario, devuelve el valor calculado de y.(a and b) devuelve 20.
orx or y"O" booleano: si x es True, devuelve el valor de x; de lo contrario, devuelve el valor calculado de y.(a or b) devuelve 10.
notnot x"NO" booleano: si x es True, devuelve False. Si x es False, devuelve True.not(a and b) devuelve False

El resultado del ejemplo anterior es:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 if ( a and b ): print ("1 - las variables a y b son ambas True") else: print ("1 - al menos una de las variables a y b no es True") if ( a or b ): print ("2 - las variables a y b son ambas True, o una de ellas es True") else: print ("2 - ninguna de las variables a y b es True") # modificar el valor de la variable a a = 0 if ( a and b ): print ("3 - las variables a y b son ambas True") else: print ("3 - al menos una de las variables a y b no es True") if ( a or b ): print ("4 - las variables a y b son ambas True, o una de ellas es True") else: print ("4 - ninguna de las variables a y b es True") if not( a and b ): print ("5 - las variables a y b son ambas False, o una de ellas es False") else: print ("5 - las variables a y b son ambas True")

El resultado del ejemplo anterior es:

1 - 变量 a 和 b 都为 true
2 - 变量 a 和 b 都为 true,或其中一个变量为 true
3 - 变量 a 和 b 有一个不为 true
4 - 变量 a 和 b 都为 true,或其中一个变量为 true
5 - 变量 a 和 b 都为 false,或其中一个变量为 false

Operadores de pertenencia de Python

Además de algunos de los operadores anteriores, Python también admite operadores de pertenencia, que comprueban si una instancia contiene un miembro de una secuencia, incluyendo cadenas, listas o tuplas.

OperadorDescripciónEjemplo
inDevuelve True si se encuentra el valor en la secuencia especificada; de lo contrario, devuelve False. x en la secuencia y: si x está en la secuencia y, devuelve True.
not inDevuelve True si no se encuentra el valor en la secuencia especificada; de lo contrario, devuelve False. x no está en la secuencia y: si x no está en la secuencia y, devuelve True.

El siguiente ejemplo demuestra las operaciones de todos los operadores de pertenencia de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 10 b = 20 list = [1, 2, 3, 4, 5 ] if ( a in list ): print ("1 - la variable a está en la lista dada list") else: print ("1 - la variable a no está en la lista dada list") if ( b not in list ): print ("2 - la variable b no está en la lista dada list") else: print ("2 - la variable b está en la lista dada list") # modificar el valor de la variable a a = 2 if ( a in list ): print ("3 - la variable a está en la lista dada list") else: print ("3 - la variable a no está en la lista dada list")

El resultado del ejemplo anterior es:

1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中

Operadores de identidad de Python

Los operadores de identidad se utilizan para comparar las unidades de almacenamiento de dos objetos.

OperadorDescripciónEjemplo
isis se utiliza para determinar si dos identificadores hacen referencia al mismo objeto. x is y, similarid(x) == id(y), si hacen referencia al mismo objeto, devuelve True; de lo contrario, devuelve False.
is notis not se utiliza para determinar si dos identificadores hacen referencia a objetos diferentes. x is not y, similarid(x) != id(y). Si no hacen referencia al mismo objeto, devuelve True; de lo contrario, devuelve False.

Nota: id()La función se utiliza para obtener la dirección de memoria del objeto.

El siguiente ejemplo demuestra las operaciones de todos los operadores de identidad de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 20 b = 20 if ( a is b ): print ("1 - a y b tienen la misma identidad") else: print ("1 - a y b no tienen la misma identidad") if ( id(a) == id(b) ): print ("2 - a y b tienen la misma identidad") else: print ("2 - a y b no tienen la misma identidad") # modificar el valor de la variable b b = 30 if ( a is b ): print ("3 - a y b tienen la misma identidad") else: print ("3 - a y b no tienen la misma identidad") if ( a is not b ): print ("4 - a y b no tienen la misma identidad") else: print ("4 - a y b tienen la misma identidad")

El resultado del ejemplo anterior es:

1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识

Diferencia entre is y ==:

is se utiliza para determinar si los objetos referenciados por dos variables son el mismo; == se utiliza para determinar si los valores de las variables referenciadas son iguales.

>>>a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True

Precedencia de operadores en Python

La siguiente tabla enumera todos los operadores de mayor a menor precedencia. Los operadores en la misma celda tienen la misma precedencia. Todos los operadores se refieren a operaciones binarias, a menos que se indique lo contrario. Los operadores en la misma celda se agrupan de izquierda a derecha (excepto la exponenciación, que se agrupa de derecha a izquierda):

Operador

Descripción

(expressions...),

[expressions...], {key: value...}, {expressions...}

Expresión entre paréntesis

x[index], x[index:index], x(arguments...), x.attribute

Indexación, segmentación, llamada, referencia a atributo

await x

Expresión await

**

Potenciación (exponente)

+x, -x, ~x

Positivo, negativo, NOT bit a bit

*, @, /, //, %

Multiplicación, multiplicación de matrices, división, división entera, módulo

+, -

Suma y resta

<<, >>

Desplazamiento de bits

&

AND bit a bit

^

XOR bit a bit

|

OR bit a bit

in,not in, is,is not, <, <=, >, >=, !=, ==

Operaciones de comparación, incluidas las pruebas de pertenencia y las pruebas de identidad

not x

NOT lógico

and

AND lógico

or

OR lógico

if -- else

Expresión condicional

lambda

Expresión lambda

:=

Expresión de asignación

El siguiente ejemplo demuestra el funcionamiento de la precedencia de todos los operadores de Python:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = 20 b = 10 c = 15 d = 5 e = 0 e = (a + b) * c / d #( 30 * 15 ) / 5 print ("El resultado de (a + b) * c / d es:", e) e = ((a + b) * c) / d # (30 * 15 ) / 5 print ("El resultado de ((a + b) * c) / d es:", e) e = (a + b) * (c / d) # (30) * (15/5) print ("El resultado de (a + b) * (c / d) es:", e) e = a + (b * c) / d # 20 + (150/5) print ("El resultado de a + (b * c) / d es:", e)

El resultado del ejemplo anterior es:

(a + b) * c / d 运算结果为: 90.0
((a + b) * c) / d 运算结果为: 90.0
(a + b) * (c / d) 运算结果为: 90.0
a + (b * c) / d 运算结果为: 50.0

and tiene mayor precedencia:

Ejemplo

x = True y = False z = False print("Caso 1: precedencia predeterminada (primero se evalúa and)") if x or y and z: # equivalente a x or (y and z) print("yes") # se imprimirá else: print("no") print("\nCaso 2: forzar el cambio de precedencia (primero se evalúa or)") if (x or y) and z: # agregar paréntesis manualmente para cambiar el orden print("yes") # no se imprimirá else: print("no") # se imprimirá

En el ejemplo anterior, primero se evalúay and zy devuelve False, luegox or Falsedevuelve True, el resultado es:

情况1:默认优先级(先算and)
yes

情况2:强制改变优先级(先算or)
no

Nota:Python3 ya no admite<>el operador, se puede usar!=en su lugar, si realmente necesitas usar este operador de comparación, puedes hacerlo de la siguiente manera:

>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
Otras extensiones