Operadors locals - Set 1 Set 2
Els operadors normals fan la tasca d'assignació senzilla. D'altra banda, els operadors Inplace es comporten de manera similar als operadors normals excepte que actuen d'una manera diferent en cas d'objectius mutables i immutables.
- El _afegir_ El mètode fa una suma simple pren dos arguments retorna la suma i l'emmagatzema en una altra variable sense modificar cap dels arguments.
- D'altra banda _iadd_ El mètode també pren dos arguments, però fa un canvi in situ en el primer argument passat emmagatzemant-hi la suma. Com que la mutació d'objectes és necessària en aquest procés, objectius immutables com ara cadenes de números i tuples no hauria de tenir el mètode _iadd_ .
Cas 1 : Objectius immutables.
En objectius immutables com ara cadenes de números i tuples. Els operadors inplace es comporten igual que els operadors normals, és a dir, només es realitza l'assignació, no es produeix cap modificació als arguments passats.
# 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(ab) # using iadd() to add the arguments passed p = operator.iadd(xy) # 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)
Sortida:
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
Cas 2 : Objectius mutables
El comportament dels operadors Inplace en objectius mutables, com ara llistes i diccionaris, és diferent dels operadors normals. El actualització i assignació es realitzen ambdues en cas d'objectius mutables.
# 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)
Sortida:
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]