请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

Python中全局变量的引用与修改之格式影响

[复制链接]
查看: 56|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
46413
发表于 2019-11-9 18:50 | 显示全部楼层 |阅读模式
先来看下面的代码及实行成果:
  1. a = 1b = [2,3]def nums():    a = 2    b[0] = 0    print(a)    print(b)print(a)print(b)nums()print(a)print(b)
复制代码
成果:
  1. 1[2, 3]2[0, 3]1[0, 3]
复制代码
对上面成果的分析:
函数 nums() 中重新界说了一个变量 a ,这个 a 是部分变量,与概况的全局变量没有关系,而全局变量 列表 b 间接被援用过来举行点窜了,一样是全局变量为什么会有差别呢?
  由于格式题目激发了歧义,容器典范的数据如,列表,字典,他们的点窜和建立钞缮格式全然差别,不会激发奇异,而数字,字符串典范变量的界说和点窜都是用 = 链接,激发了格式上的歧义,所以,当Python表白器碰到函数中的 “a = 2”这类格式时,不晓得是 “援用全局变量a点窜成2” 还是 “界说一个即是 2 的变量” ,从而激发歧义,为了确保全局变量对代码其他部分发生更小的影响,Python默以为第二种——重新界说一个变量,来禁止点窜全局变量对团体代码发生其他未知影响。
综上所述:
本质:格式激发的歧义题目
应用:对于字典,列表不会由于格式题目激发歧义的,不用管他;对于数字,字符串来说,当援用与建立发生歧义时,Python表白器默许建立新的变量,若不想建立,只是想点窜全局变量,必要加global声明,此外,假如只是纯真的援用全局变量,而不会发生歧义的,如 对于全局变量 a 来说,b = a + 5,这里只是纯真的利用,不会发生格式上的歧义题目,也不必要加global。
转自:https://www.cnblogs.com/Fruitzombie/p/8041115.html

免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表