Operadores inplace vs estándar en Python

Operadores Inplace – Conjunto 1 , Conjunto 2
Los operadores normales hacen el trabajo de asignación simple. Por otro lado, los operadores Inplace se comportan de manera similar a los operadores normales excepto que actúan de manera diferente en el caso de objetivos mutables e inmutables. 
 

  • El método _add_ hace sumas simples, toma dos argumentos, devuelve la suma y la almacena en otra variable sin modificar ninguno de los argumentos.
  • Por otro lado, el método _iadd_ también toma dos argumentos, pero hace un cambio en el lugar en el primer argumento pasado al almacenar la suma en él. Como se necesita la mutación de objetos en este proceso, los objetivos inmutables, como números, strings y tuplas, no deberían tener el método _iadd_ .
  • El método “add()” del operador normal , implementa “ a+b ” y almacena el resultado en la variable mencionada.
  • El método “iadd()” del operador en lugar , implementa “ a+=b ” si existe (es decir, en el caso de objetivos inmutables, no existe) y cambia el valor del argumento pasado. Pero si no, se implementa “a+b” .

Caso 1 : objetivos inmutables.  
En objetivos inmutables, como números, strings y tuplas. Los operadores en lugar se comportan igual que los operadores normales, es decir, solo se realiza la asignación, no se modifican los argumentos pasados.
 

Python

# Python code to demonstrate difference between 
# Inplace and Normal operators in Immutable Targets
  
# importing operator to handle operator operations
import operator
  
# Initializing values
x = 5
y = 6
a = 5
b = 6
  
# using add() to add the arguments passed 
z = operator.add(a,b)
  
# using iadd() to add the arguments passed 
p = operator.iadd(x,y)
  
# printing the modified value
print ("Value after adding using normal operator : ",end="")
print (z)
  
# printing the modified value
print ("Value after adding using Inplace operator : ",end="")
print (p)
  
# printing value of first argument
# value is unchanged
print ("Value of first argument using normal operator : ",end="")
print (a)
  
# printing value of first argument
# value is unchanged
print ("Value of first argument using Inplace operator : ",end="")
print (x)

Producción:

Value after adding using normal operator : 11
Value after adding using Inplace operator : 11
Value of first argument using normal operator : 5
Value of first argument using Inplace operator : 5

Caso 2 : destinos mutables El comportamiento de los operadores Inplace 
en destinos mutables, como listas y diccionarios, es diferente al de los operadores normales. Tanto la actualización como la asignación se llevan a cabo en el caso de objetivos mutables.
 

Python

# Python code to demonstrate difference between 
# Inplace and Normal operators in mutable Targets
  
# importing operator to handle operator operations
import operator
  
# Initializing list
a = [1, 2, 4, 5]
  
# using add() to add the arguments passed 
z = operator.add(a,[1, 2, 3])
  
# printing the modified value
print ("Value after adding using normal operator : ",end="")
print (z)
  
# printing value of first argument
# value is unchanged
print ("Value of first argument using normal operator : ",end="")
print (a)
  
# using iadd() to add the arguments passed 
# performs a+=[1, 2, 3]
p = operator.iadd(a,[1, 2, 3])
  
# printing the modified value
print ("Value after adding using Inplace operator : ",end="")
print (p)
  
# printing value of first argument
# value is changed
print ("Value of first argument using Inplace operator : ",end="")
print (a)

Producción: 
 

Value after adding using normal operator : [1, 2, 4, 5, 1, 2, 3]
Value of first argument using normal operator : [1, 2, 4, 5]
Value after adding using Inplace operator : [1, 2, 4, 5, 1, 2, 3]
Value of first argument using Inplace operator : [1, 2, 4, 5, 1, 2, 3]

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *