logo

Inplace vs Standard Operators i Python

Inplace-operatører - Sett 1 Sett 2
Vanlige operatører gjør den enkle tildelingsjobben. På den annen side oppfører Inplace-operatører seg på samme måte som vanlige operatører unntatt at de opptrer på en annen måte i tilfelle foranderlige og uforanderlige mål. 
 

  • De _legge til_ metoden gjør enkel addisjon tar to argumenter returnerer summen og lagrer den i en annen variabel uten å endre noen av argumentene.
  • På den annen side _iadd_ metoden tar også to argumenter, men den gjør en på plass endring i det første argumentet som sendes ved å lagre summen i den. Siden objektmutasjon er nødvendig i denne prosessen, er uforanderlige mål som tallstrenger og tupler skal ikke ha _iadd_-metoden .
  • Normal operatørs 'add()'metode implementerer ' a+b ' og lagrer resultatet i den nevnte variabelen.Sett inn operatørens 'iadd()'metode implementerer ' a+=b ' hvis det eksisterer (dvs. i tilfelle uforanderlige mål, eksisterer det ikke) og endrer verdien av det beståtte argumentet. Men hvis ikke 'a+b' er implementert .


Sak 1 : Uforanderlige mål.  
I uforanderlige mål som tallstrenger og tupler. Inplace-operatorer oppfører seg på samme måte som vanlige operatorer, dvs. bare tilordning finner sted ingen modifikasjon finner sted i de beståtte argumentene.
 

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) 

Produksjon:



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


Tilfelle 2 : Foranderlige mål  
Oppførselen til Inplace-operatører i foranderlige mål som lister og ordbøker er forskjellig fra vanlige operatører. De både oppdatering og oppdrag utføres i tilfelle 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) 

Produksjon: 
 

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]


 

Lag quiz