博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记
阅读量:7287 次
发布时间:2019-06-30

本文共 765 字,大约阅读时间需要 2 分钟。

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)))

建议你自己运行看看

转载于:https://www.cnblogs.com/zhiyong-ITNote/p/8693660.html

你可能感兴趣的文章
VMware Workstation 7.0中文版下载
查看>>
Don’t forget about column projection
查看>>
linux系统修复及忘记密码的处理方法
查看>>
CAS和ABA问题
查看>>
js创建对象的几种常用方式
查看>>
SQL Server AlwaysOn可用性及故障转移
查看>>
Spring Cloud 注册中心高可用搭建
查看>>
js 简单版本号比较
查看>>
Linux用户配置sudo权限(visudo)
查看>>
rocketmq 事物消息压测
查看>>
eclipse debug 多线程
查看>>
ubuntu System Settings 里面的内容显示不正常
查看>>
Udp传输入门
查看>>
什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?
查看>>
3.C#.Net 英汉词典的编写
查看>>
shell习题_6
查看>>
Ubuntu 14.04双显卡出现"未知显示器"问题
查看>>
Golang学习(15)——Unicode utf16包
查看>>
封装允许执行命令有超时
查看>>
一种字符编码猜测工具的实现方法
查看>>