python中list作为全局变量无需global声明的原因
发现一个问题。
python中list变量作为全局变量时,在函数中可以直接修改。
而普通变量则需要先在函数中global声明,否则会报错。
例如:
a = 1
def fun():
global a
a = 2
而list:
b = [1,2]
def fun():
b[0] = 2
在函数中直接修改list则是可以的。
原因是:
普通变量如果在函数中赋值
a = 2
会有歧义。因为它既可以是表示引用全局变量a,也可以是创建一个新的局部变量,所以在python中,默认它的行为是创建局部变量,除非显式声明global。
而对列表list变量进行赋值
b[0] = 2
则不会有歧义。它是“明确的”,因为如果把b当作是局部变量的话,它会报KeyError,所以它只能是引用全局的b,故不需要多此一举显式声明global。
参考自:
实例讲解Python中global语句下全局变量的值的修改
Freecode# : www.cnblogs.com/yym2013
python中list作为全局变量无需global声明的原因相关推荐
- Python 中多线程共享全局变量的问题
Python 中多个线程之间是可以共享全局变量的数据的. 但是,多线程共享全局变量是会出问题的. 假设两个线程 t1 和 t2 都要对全局变量 g_num (默认是0)进行加1运算,t1 和 t2 都 ...
- 在python中、关于全局变量和局部变量、以下_关于全局变量和局部变量-Python
练习: No.1 num = 100 def func(): num = 123 print(num) func() 先 想 一 下 : 输出: 123 解析: 函数内部的变量名,如果第一次出现,且出 ...
- python中局部变量和全局变量
局部变量,就是在函数内部定义的变量 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响 局部变量的作用,为了临时保存数据需要在函数 在函数外边定义的变量叫做全局变量 全局变量能够在所有 ...
- 在python中可以用什么关键字来声明一个类_3. Python基础语法
注释 我们在文言文中经常会看到注释,注释可以帮助读者对文章的理解.代码中的注释也是一样,优秀的代码注释可以帮助读者对代码的理解.当然在代码编写过程中,注释的使用不一定只是描述一段代码,也可能的是对代码 ...
- python中使用“[函数名].[变量名]”声明变量
在<机器学习实战>中,作者使用了一种[函数名].[变量名]的格式声明并引用变量. 示例如下: def createPlot(inTree):fig = plt.figure(1, face ...
- 在python中、关于全局变量和局部变量_在Python中,关于全局变量和局部变量,以下选项中描述不正确的是...
[单选题]Python文本处理方向的第三方库是 [单选题]哪个选项的描述是正确的? [单选题]以下选项中属于Python语言中合法的二进制整数是 [单选题]以下说法错误的是: [单选题]下面属于B2B ...
- 在python中可以用什么关键字来声明一个类_python里的raise是什么意思
我们在开发当中经常会遇到一些未知或已知的错误,比如用requests发送请求时可能会出现异常,或者某个程序计算时出现分母为0的情况.面对各种奇形怪状的错误,高级语言都会有一个抛出错误的机制.在Pyth ...
- [转载] 在python中、关于全局变量和局部变量、以下_python中的全局变量和局部变量
参考链接: Python全局,局部和非局部变量 1. 使用局部变量 deffunc(x): print'x is', x x =2 print'Changed local x to', x x =50 ...
- 在python中、关于全局变量和局部变量、以下_python中的全局变量和局部变量
1. 使用局部变量 deffunc(x): print'x is', x x =2 print'Changed local x to', x x =50 func(x) print'x is stil ...
最新文章
- exchange online share mailbox senditem
- 微服务探索与实践—总述
- 迈克尔·戴尔再次到访2019戴尔科技峰会,为“戴尔中国4.0+战略”加个码……
- 金笛邮件中使用wap邮箱
- Nginx笔记-使用Nginx给vue应用设置一个代理
- 微软提出第一个端到端的Video Captioning方法:SWIN BERT,涨点显著!
- 华为旗下哈勃投资公司入股光刻机制造商科益虹源
- c#中类的简单使用学习
- sysoper在oracle是什么意思,oracle用户 sysdba 与system,sysoper的区别
- Commons IO 2.5-IOUtils
- HBuilde H5开发,关于JSON的Storage存储
- 通俗易懂web3.0
- 硬盘容量的计算方法,这就是为什么实际容量总比官方标示少的原因
- php 打印出心形,利用php输出不同的心形图案_PHP
- 【python基础】猜数字游戏
- java消息队列-kafka
- Django企业开发实战--by胡阳,学习记录1127
- 【websocket前后端交互】vue-springboot实现websocket前后端交互链接,websocket心跳重连,包含前后端代码,复制即可用【详细解释版本】
- linux替换变量字符串,linux shell 替换字符串的几种方法,变量替换${},sed,awk
- bibtex类型以及格式要求
热门文章
- LEMP+memcached
- 用Jenkins自动化构建Android和iOS应用
- Matlab绘图高级部分
- ns-3 NetAnim遇到了一个问题
- 白鸦三次创业反思:公司遇问题 怎么走都对(转)
- CodeBlocks集成Objective-C开发 Windows下学习Objective-C
- Java集合工具类(三)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集......
- 国有大型企业数据级同城异地灾难备份案例
- wince中的hook(钩子)用法
- nconf创建nagios实例