python 全局变量引用与修改
来源:互联网 发布:天猫抢购软件 编辑:程序博客网 时间:2024/06/05 08:26
一、引用
使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如:
#! /usr/bin/pythona = 1b = [2, 3]def func(): if a == 1: print("a: %d" %a) for i in range(4): if i in b: print("%d in list b" %i) else: print("%d not in list b" %i)if __name__ == '__main__': func()
输出结果:
可以看出,无论是列表还是变量,都是可以直接引用的。
二、修改
使用到的全局变量,需要在函数中修改的话,就涉及到歧义问题,如:
#! /usr/bin/pythona = 1b = [2, 3]def func(): a = 2 print "in func a:", a b[0] = 1 print "in func b:", bif __name__ == '__main__': print "before func a:", a print "before func b:", b func() print "after func a:", a print "after func b:", b
输出结果:
可以看出,对于变量a,在函数func中"a = 2",因为存在既可以表示引用全局变量a,也可以表示创建一个新的局部变量的歧义,所以python默认指定创建一个新的局部变量来消除这一歧义,但对于列表b而言,"b[0] = 1"不存在这种歧义,因此直接修改了全局变量,但是如果改成了"b = [3, 4]",那么b也会变成局部变量。特别地,当在func中a = 2之前加入"if a == 1:"这一语句,脚本运行出错,因为这一语句引入了全局变量,导致了"a = 1"这一语句无法创建同名的局部变量。
因此,需要修改全局变量a,可以在"a = 2"之前加入global a声明,如:
#! /usr/bin/pythona = 1b = [2, 3]def func(): global a a = 2 print "in func a:", a b[0] = 1 print "in func b:", bif __name__ == '__main__': print "before func a:", a print "before func b:", b func() print "after func a:", a print "after func b:", b
输出结果:
结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。
转载自:http://www.cnblogs.com/yanfengt/p/6305542.html
阅读全文
0 0
- python 全局变量引用与修改
- Python多模块全局变量引用和修改
- Python global全局变量只能在函数中没做global申明,可以引用但修改会报错。
- python中怎样修改全局变量
- python 中全局变量的修改
- Python----变量与全局变量
- 函数中“引用”全局变量和“修改”全局变量的差别
- Python局部变量与全局变量
- Python局部变量与全局变量
- Python 局部变量与全局变量
- python 局部变量与全局变量
- Python全局变量与global语句
- Python 全局变量与局部变量
- Python 全局变量与global关键字
- Python全局变量与局部变量
- python全局变量与局部变量
- 多进程修改全局变量(python版)
- python:线程的使用、线程共享全局变量、列表作为参数(全局变量)、避免全局变量被修改
- 后缀自动机的一些简单题目
- for 语句初始化后第二步是条件判断
- 自定义标题栏(左中右三块)
- LoRa芯片的八种工作模式解析
- ssm整合
- python 全局变量引用与修改
- 十一个行为型模式10:模板方法模式-Template Method Pattern【学习难度:★★☆☆☆,使用频率:★★★☆☆】
- 29、数据结构笔记之二十九数组之硬币抛掷模拟
- 用pyinstaller生成exe遇到的问题
- 达内课程-正则表达式
- ssm实现分页
- 30. 数据结构笔记之三十数组之厄拉多塞筛
- 断言
- 31. 数据结构笔记之三十一广义表