当前位置:编程语言->Python ->python学习--杂七乱八的笔记

原创版权标志python学习--杂七乱八的笔记

作者:阿郎  发表时间:2018/4/3 12:22:00  阅读:
[摘要] python 中的strings, tuples, 以及numbers都是不可变类型,而list以及dict都是可变类型
阿里云ECS服务器最低一个月只要7.8元
python 中的strings, tuples, 以及numbers都是不可变类型,而list以及dict都是可变类型
示例module1.py 以及module2.py 从两个方面验证了上述结论。
首先,所谓不可变类型以及可变类型其实可以理解为值类型引用与引用类型引用。即传递参数的时候,是传递值还是传递引用。函数的作用域就相当于一个闭包,在此作用域内的修改才有效,因此,当函数传参的时候,可变类型传递的都是引用地址,而不可变类型传递的都是值。可变类型的修改就是影响全局,而不可变类型的修改只会影响此函数内的作用域。

    module1.py:

    

def func(a):
 a = 3
 print("a的原始值{0} 以及a的地址{1}".format(a, id(a)))


if __name__ == "__main__":
 a = 1
 print("a的原始值{0} 以及a的地址{1}".format(a, id(a)))
 func(a)
 # a = 2
 print("a的原始值{0} 以及a的地址{1}".format(a, id(a)))

    

module2.py:
def func(a):
 a.append(1)
 print("a的原始值{0} 以及a的地址{1}".format(a[0], id(a)))

if __name__ == "__main__":
 a = []
 func(a)
 a.append(2)
 print("a的原始值{0} 以及a的地址{1}".format(a[1], id(a)))
建议你自己运行下看看
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)