当前位置:
首页 > temp > python入门教程 >
-
Python中全局变量的引用与修改之格式影响
先来看下面的代码及执行结果:
a = 1
b = [2,3]
def nums():
a = 2
b[0] = 0
print(a)
print(b)
print(a)
print(b)
nums()
print(a)
print(b)
结果:
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
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数