Operators plaatsen - Set 1 Stel 2 in
Normale operators doen de eenvoudige toewijzingstaak. Aan de andere kant gedragen Inplace-operators zich op dezelfde manier als normale operators behalve dat ze op een andere manier handelen bij veranderlijke en onveranderlijke doelen.
probeer Java te vangen
- De _toevoegen_ methode doet eenvoudige optelling neemt twee argumenten retourneert de som en slaat deze op in een andere variabele zonder een van de argumenten te wijzigen.
- Anderzijds _iadd_ De methode heeft ook twee argumenten nodig, maar brengt een interne wijziging aan in het eerste argument dat wordt doorgegeven door de som daarin op te slaan. Omdat in dit proces objectmutatie nodig is, zijn er onveranderlijke doelen zoals getallenreeksen en tupels zou geen _iadd_ methode moeten hebben .
Geval 1 : Onveranderlijke doelen.
In onveranderlijke doelen zoals getallenreeksen en tupels. Inplace-operatoren gedragen zich hetzelfde als normale operatoren, dat wil zeggen dat er alleen toewijzing plaatsvindt en dat er geen wijziging plaatsvindt in de doorgegeven argumenten.
# 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)
Uitgang:
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
Geval 2 : Veranderlijke doelen
Het gedrag van Inplace-operatoren in veranderlijke doelen zoals lijsten en woordenboeken wijkt af van dat van normale operators. De update en toewijzing worden beide uitgevoerd in het geval van veranderlijke doelen.
# 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)
Uitgang:
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]