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

 

posted @ 2022-08-08 19:26  小鲨鱼2018  阅读(132)  评论(0编辑  收藏  举报