1. Python 变量作用域
Python 的变量作用域可以分下面四种:
- Local:局部作用域
- Enclosing:闭包函数外的函数作用域
- Global:全局作用域
- Built-in:内建作用域
查找变量会逐级别查找(L、E、G、B)。这里值得注意的是,Python 不具备块级作用域,而是一种类似于函数作用域的形式。
2. Python 变量的定义
Python 无需声明便直接定义变量,但是如下例:
1a = 1
2b = 99
3
4def print_two(x, y):
5 print(x)
6 print(y)
7
8def function_test():
9 a = 2
10 print_two(a, b)
11
12function_test()
13print_two(a, b)
运行时输出为:
12
299
31
499
可知,在内部作用域中,可以直接引用全局作用域中变量的值,但是无法直接进行赋值修改操作。
3. global 关键字
如例子所示:
1a = 1
2b = 99
3
4def print_two(x, y):
5 print(x)
6 print(y)
7
8def function_test():
9 global a
10 a = 2
11 print_two(a, b)
12
13function_test()
14print_two(a, b)
运行结果:
12
299
32
499
global 关键字的作用是,在局部作用域中,使用全局变量。若不涉及全局变量的修改(只是单纯引用),也可以不使用 global 关键字。
4. nonlocal 关键字
示例代码:
1a = 1
2
3def test():
4 a = 2
5 def test1():
6 a = 3
7 def test2():
8 nonlocal a
9 a = 4
10 print(a)
11 test2()
12 print(a)
13 test1()
14 print(a)
15
16test()
17print(a)
运行结果:
14
24
32
41
即 nonlocal 关键字,用来在局部作用域中使用外层(非全局)变量。
5. 关于全局变量
在 Python 中,另一种使用全局变量的方式,就是使用单独的 global.py
文件,存储所有的全局变量,可以进行引用和修改。
参考链接
- 初识 Python: global 关键字
- python变量总结: 全局变量、局部变量、类变量、实例变量以及global和nonlocal关键字的使用示例
- python基础 - global关键字及全局变量的用法
- python语法32[global与nonlocal比较]
版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。
Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.