python 中 局部变量和全局变量
001、局部变量:作用域仅限于函数内部。
(base) root@PC1:/home/test# ls test.py (base) root@PC1:/home/test# cat test.py ## 测试脚本 #!/usr/bin/python def test_fun(): ## 创建函数 a = 10 print(a) test_fun() ## 调用函数 print("______________") print(a) (base) root@PC1:/home/test# python test.py ## 执行程序 10 ## 输出局部变量的值10 ______________ Traceback (most recent call last): File "/home/test/test.py", line 10, in <module> print(a) NameError: name 'a' is not defined ## 在函数外部,局部变量a无法起作用
002、全局变量:作用域在整个脚本
(base) root@PC1:/home/test# ls test.py (base) root@PC1:/home/test# cat test.py ## 测试脚本 #!/usr/bin/python b = 1000 ## 定义全局变量b def test_fun(): a = 10 print(a) ## 在函数内部输出局部变量a print(b) ## 在函数内部输出全局变量b test_fun() ## 调用函数 (base) root@PC1:/home/test# python test.py ## 执行函数 10 1000
003、如果要先在函数内部调用全局变量, 全局变量必须定义在函数的前面
(base) root@PC1:/home/test# ls test.py (base) root@PC1:/home/test# cat test.py ## 测试脚本 #!/usr/bin/python def test_fun(): a = 10 ## 局部变量 print(a) print(b) ## 调用全局变量, 全局变量b定义在函数后面,调用将报错 test_fun() b = 1000 (base) root@PC1:/home/test# python test.py ## 执行程序,全局变量定义在函数后面,在函数内部无法调用全局变量b 10 Traceback (most recent call last): File "/home/test/test.py", line 8, in <module> test_fun() File "/home/test/test.py", line 6, in test_fun print(b) NameError: name 'b' is not defined