📅  最后修改于: 2020-06-22 05:55:47             🧑  作者: Mango
普通运算符执行简单的分配工作。另一方面,Inplace运算符的行为与普通运算符相似,只是在可变目标和不可变目标的情况下它们以不同的方式起作用。
在这两种情况下,都需要分配存储值。
# Python代码,展示不可变数值的就地替换add和常规add
# 导入operator模块
import operator
# 初始化
x = 5
y = 6
a = 5
b = 6
# 使用add()方法
z = operator.add(a,b)
# 使用iadd()方法
p = operator.iadd(x,y)
# 打印改变后的值
print ("改变后的值 : ",end="")
print (z)
# 打印改变后的值
print ("就地替换改变后的值 : ",end="")
print (p)
# 打印第一个参数的值
print ("使用常规add第一个参数的值 : ",end="")
print (a)
# 打印使用就地替换的第一个参数的值
print ("使用就地替换的第一个参数的值 : ",end="")
print (x)
输出:
改变后的值 : 11
就地替换改变后的值 : 11
使用常规add第一个参数的值 : 5
使用就地替换的第一个参数的值 : 5
情况2:可变目标
可变目标(如列表和字典)中Inplace运算符的行为与普通运算符不同。在可变目标的情况下,更新和赋值都执行。
# Python代码,展示可变数值的就地替换add和常规add
# 倒入operator模块
import operator
# 初始化列表
a = [1, 2, 4, 5]
# 使用add()
z = operator.add(a,[1, 2, 3])
# 打印常规add之后第一个值
print ("常规add的结果 : ",end="")
print (z)
# 常规add后的第一个值,没有改变
print ("常规add后的第一个值 : ",end="")
print (a)
# 使用iadd()
# performs a+=[1, 2, 3]
p = operator.iadd(a,[1, 2, 3])
# 打印使用就地替换add的结果
print ("使用就地替换add的结果 : ",end="")
print (p)
# 打印使用就地替换add后的第一个值
print ("使用就地替换add后的第一个值 : ",end="")
print (a)
输出:
常规add的结果 : [1, 2, 4, 5, 1, 2, 3]
常规add后的第一个值 : [1, 2, 4, 5]
使用就地替换add的结果 : [1, 2, 4, 5, 1, 2, 3]
使用就地替换add后的第一个值 : [1, 2, 4, 5, 1, 2, 3]