Python全局变量和局部变量
来源:互联网 发布:什么是主域名与子域名 编辑:程序博客网 时间:2024/05/18 13:08
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
total = 0; # 这是一个全局变量# 可写函数说明def sum( arg1, arg2 ): #返回2个参数的和." total = arg1 + arg2; # total在这里是局部变量. #在函数中 如果对一个和全局变量名相同的变量进行=value的时候,默认是定义一个变量 #只不过这个变量的名字和全局变量的名字相同罢了 print ("函数内是局部变量 : ", total) return total;#调用sum函数sum( 10, 20 );print ("函数外是全局变量 : ", total)
以上实例输出结果:
函数内是局部变量 : 30
函数外是全局变量 : 0
global 和 nonlocal关键字
global
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
以下实例修改全局变量 num:
num = 1def fun1(): global num # 使用global用来对一个全局变量的声明,那么这个函数中的num就不是定义一个局部变量,而是 #对全局变量进行修改 print(num) num = 123 print(num)fun1()
以上实例输出结果:
1
123
列表是当全局变量的
如下面的例子
nums = [11,22,33]infor = {"name":"wang"}def test(): #for num in nums: # print(num) nums.append(44) infor['age'] = 18def test2(): print(nums) print(infor)test() #[11, 22, 33, 44]test2() #{'name': 'wang', 'age': 18}
nonlocal
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
def outer(): num = 10 def inner(): nonlocal num # nonlocal关键字声明 num = 100 print(num) inner() print(num)outer()
以上实例输出结果:
100
100
另外有一种特殊情况,假设下面这段代码被运行:
a = 10def test(): a = a + 1 print(a)test()
以上程序执行,报错信息如下:
Traceback (most recent call last): File "test.py", line 7, in <module> test() File "test.py", line 5, in test a = a + 1UnboundLocalError: local variable 'a' referenced before assignment
错误信息为局部作用域引用错误,因为 test 函数中的 a 使用的是局部,未定义,无法修改。
阅读全文
0 0
- python全局变量和局部变量
- Python全局变量和局部变量
- python局部变量和全局变量
- python全局变量和局部变量
- python全局变量和局部变量
- python局部变量和全局变量
- Python全局变量和局部变量
- Python 全局变量 局部变量
- python 局部变量和全局变量 global
- python函数全局变量和局部变量
- python 局部变量和全局变量 global
- python的局部变量和全局变量
- Python中的局部变量和全局变量
- python的全局变量和局部变量
- python 中的全局变量和局部变量
- python全局变量和局部变量, global
- python中的局部变量和全局变量
- Python学习之,全局变量和局部变量
- springBoot(一)
- 解决@ResponseBody注解返回中文乱码
- 3D扫描仪到底是怎么工作的?
- POJ 1159.Palindrome
- 前端页面Double转换Integer,input前段页面的类型转换
- Python全局变量和局部变量
- Spring boot Hibernate SSerializationException: could not deserialize invalid stream header
- 用select实现TCP回射程序(服务器及客户端)
- SQL Server2008 学习之(十二) :XML存储与查询技术
- 搜索提示框实现
- 机器学习第5章第1节(下) : 针对两类函数训练神经网络
- 1004. 成绩排名 (20)
- nginx 实现 反向代理 负载均衡
- HDU 1713 相遇周期(求两个分数的最小公倍数)