网站推广网络推广方,在eclipse中做网站开发,上海做宴会的网站,做最便宜的网站建设Python学习教程#xff1a;Python增强赋值及共享引用注意事项 概述 Python中的增强赋值是从C语言中借鉴出来的#xff0c;所以这些格式的用法大多和C一致#xff0c;本身就是对表达式的简写#xff0c;即二元表达式和赋值语句的结合#xff0c;比如a b 和a a b 就是一致…Python学习教程Python增强赋值及共享引用注意事项 概述 Python中的增强赋值是从C语言中借鉴出来的所以这些格式的用法大多和C一致本身就是对表达式的简写即二元表达式和赋值语句的结合比如a b 和a a b 就是一致的比如还有以下的增强赋值语句。 即增强赋值语句适用于任何支持隐式二元表达式的类型比如“”的多态数字的相加和字符串的合并 数字加减 a 1
a a 1
print(str(a))
a 1
print(str(a))示例结果 2
3字符串合并 S I
S S like
print(S)
S Python.
print(S)示例结果 I like
I like Python.优点 简洁减少一次a的执行执行速度更快针对可变对象增强赋值会自动选择执行原处的修改运算而不是速度更慢的复制。这就引申出我们在可变对象中可能涉及的共享引用问题。共享引用 当我们想要扩展列表时比如将一组元素添加到末尾我们会怎么做 L [1, 2, 3]
# 传统“”法
L L [4, 5]
print(L)
# 利用列表方法extend
L.extend([6, 7])
print(L)示例结果 [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7]示例中第一中“”法即采用合并的方法需要新创建一个对象把左侧的L复制到新列表中然后再[4, 5]复制到新列表中。而第二种extend则是直接在内存空间列表L末尾L加上[4, 5]即速度会更快增强赋值则是自动采用的第二种即L.extend([6, 7])和L [6, 7]是等价的也是最优的选择。这种合并方式虽然快但对于可变对象的共享引用则会变的棘手些。 L1 [1, 2, 3]
L2 L1
L2 L2 [4, 5]
print(L2)
print(L1)
print(- * 21)
L1 [1, 2, 3]
L2 L1
L2 [4, 5]
print(L2)
print(L1)示例结果 [1, 2, 3, 4, 5]
[1, 2, 3]
---------------------
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]我们可以从示例中看到如果同一个可变对象赋值了多个变量那么在破坏共享引用结构时就应该对可变对象拷贝后在进行操作。转载于:https://www.cnblogs.com/cherry-tang/p/10956288.html