全局变量和局部变量的区别详解:作用范围、使用场景及实例分析

1 全局变量和局部变量 の 区别 1.1 局部变量

全局变量和局部变量的区别详解:作用范围、使用场景及实例分析

[id_96[id_2043551535]63694]

作用范围在这个函数内部,意味着只能在该函数中使用,在函数外部无法使用。由于其作用范围仅在自身函数内部,所以不同的函数能够定义相同名字的局部变量。比如,把你、我当作函数,把局部变量理解为每个人手里的手机,你可以有个 iPhone11,我当然也可以有个 iPhone11,二者互不相关。

局部变量的作用在于,在函数中需要临时保存数据时,就需要定义变量来进行存储。

函数调用时会创建局部变量,函数调用完成后该变量就无法再被使用。

def show(): 
    # 定义局部变量 
    sal = 15000 
    print("薪资:", sal) 
show() 

薪资: 15000

1.2 全局变量

一个变量,如果既能在一个函数里使用,又能在其他的函数里使用,那么这样的变量就是全局变量。

有 2 个兄弟,他们各自拥有手机,手机里存有各自的小秘密,彼此不让对方使用(可视为局部变量);然而,家里的电话,2 个兄弟都能够随意使用(可视为全局变量)

# 定义全局变量 
money = 1200 
def test1(): 
    print(money) 没有定义变量 money ,但是可以使用全局变量 money 。
test1()

1200

总结

1.3 全局变量和局部变量冲突问题

# 定义全局变量 
x = 100 
def test1(): 
    # 定义局部变量,与全局变量名字相同 
    x = 300 
    print('---test1---%d'%x) 
    
    #修改 x = 200 
    print('修改后的%d'%x) 
def test2(): 
    print('x = %d'%x) 
    
test1() 
test2()

—test1—300

修改后的300

x = 100

总结:

1.4 修改全局变量

函数中进行使用全局变量时可否进行修改呢?

# 定义全局变量 
x = 100 
def test1(): 
    # 定义全局变量,使用global函数声明变量x为全局变量
    global x 
    print('修改之前:%d'%x) 
    
    #修改 
    x = 200 
    print('修改之后:%d'%x) 
    
def test2(): 
    print('x = %d'%x) 
    
test1() 
test2()

2 global和nonlocal の 区别

# L = Local     局部作用域
# E = Enclosing 嵌套作用域
N 等于 nonlocal ,它只在嵌套作用域中起作用,并且仅仅在函数内部起作用。
# G = global    全局作用域
# B = Built-in  内置作用域
"""
locals()函数返回一个当前位置的所有局部变量的字典
globals()函数会返回一个全局变量的字典,此字典包含了所有被导入的变量。
在函数体内可以设置局部变量,其中 local 用于设置局部变量;在函数体内声明的变量,通常情况下都是局部变量。
global 被设定为全局变量,并且 global 必须在函数的内部进行设置;同时,global 还具备定义新的全局变量的功能。
nonlocal 可以在内层函数中改变外层函数的变量值,并且这种使用是有条件的,即需在内层函数中进行;同时,nonlocal 不能用于定义新的外层函数变量。
"""
def outer(c):
    global a
    a,b=10,20
    print('【outer】a={},b={}'.format(a,b))
    print('【outer】局部变量',locals())
    def inner(*args, **kwargs):
        nonlocal c
        c=30
        print(【inner】的非局部变量 c 等于空的字典 {} 。.format(c))
    inner()
outer(1)
print('全局变量',globals())

【outer】a=10,b=20
【outer】局部变量 {'b': 20, 'c': 1}
【inner】nonlocal c=30
全局变量 {'__name__': '__main__', '__doc__': None, 
'__package__': None, 
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02D5DD30>,
 '__spec__': None, 
'__annotations__': {}, 
'__builtins__': <module 'builtins' (built-in)>, 
'__file__': 在桌面上的 Python 代码文件夹中的 jupyter notebook 里的 te.py 文件路径为:d:\\desktop\\Python code\\jupyter notebook\\te.py, 
'__cached__': None, 
'outer': <function outer at 0x02F0C660>, 
'a': 10}

Reference:

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读