logo

Inplace vs Standard Operators i Python

Inplace operatører - Sæt 1 Sæt 2
Normale operatører udfører det enkle tildelingsjob. På den anden side opfører Inplace-operatører sig på samme måde som normale operatører undtagen at de handler på en anden måde i tilfælde af foranderlige og uforanderlige mål. 
 

  • De _tilføje_ metoden gør simpel addition tager to argumenter returnerer summen og gemmer den i en anden variabel uden at ændre nogen af ​​argumenterne.
  • På den anden side _iadd_ metoden tager også to argumenter, men den foretager en på stedet ændring i det 1. argument, der sendes ved at gemme summen i den. Da objektmutation er nødvendig i denne proces, er uforanderlige mål, såsom talstrenge og tupler burde ikke have _iadd_-metoden .
  • Normal operators 'add()'metode implementerer' a+b ' og gemmer resultatet i den nævnte variabel.Indsæt operatørens 'iadd()'metode implementerer' a+=b ' hvis det eksisterer (dvs. i tilfælde af uforanderlige mål, eksisterer det ikke) og ændrer værdien af ​​det beståede argument. Men hvis ikke 'a+b' er implementeret .


Tilfælde 1 : Uforanderlige mål.  
I uforanderlige mål såsom talstrenge og tupler. Inplace-operatorer opfører sig på samme måde som normale operatorer, dvs. kun tildeling finder sted, ingen ændring finder sted i de beståede argumenter.
 

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

Produktion:



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


Tilfælde 2 : Foranderlige mål  
Opførslen af ​​Inplace-operatorer i foranderlige mål, såsom lister og ordbøger, er forskellig fra normale operatorer. De opdatering og tildeling udføres begge i tilfælde af foranderlige mål.
 

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) 

Produktion: 
 

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]


 

Opret quiz