博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中可变与不可变类型的全局变量
阅读量:5091 次
发布时间:2019-06-13

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

python中的不可变类型的全局变量如int  a=1,str  b='hello', 若需要修改必须加global申明, 而全局变量是可变类型的,如list, dict ,则直接修改list.append(),dict[x]=xx, 无需申明.

若全局变量与局部变量同名, 采用就近原则.

 

1 c=[1,2,3,4,5] 2 d=2 3 e='HELLO' 4 f={
'name':'xx','age':18} 5 class A: 6 b=[1,2,3] 7 d=222 8 def hehe(self): 9 self.b.append(4)10 self.d=33311 c.append(6)12 global e13 d=314 e=e.lower() # 必须global e 才不报错15 f['age']=2016 print(self.b,c,d,e,f,self.d)17 def haha(self):18 print(self.b,c,d,e,f,self.d)19 if __name__ == '__main__':20 a = A().hehe()21 A().haha() output:

[1, 2, 3, 4] [1, 2, 3, 4, 5, 6] 3 hello {'name': 'xx', 'age': 20} 333

[1, 2, 3, 4] [1, 2, 3, 4, 5, 6] 2 hello {'name': 'xx', 'age': 20} 222

 

原因在于int类型str类型,tuplel类型,只有一种修改方法,即x = y, 恰好这种修改方法同时也是创建变量的方法,所以产生了歧义.

转载于:https://www.cnblogs.com/wangyi0419/p/11300855.html

你可能感兴趣的文章
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>