Python局部变量和全局变量区别

1. 定义

全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量
局部变量: 在函数内、在class的方法内(未加self修饰),这就是局部变量

2. 如何使用:

在def中,我们可以定义一个局部变量,该变量仅仅在函数体中有生存期,出了这个函数体,变量就不能使用了。

def fun():
    a = 10
    print(a)
    return a + 100
print(fun())

输出:

10
110

也就是说我们在函数体内使用都是局部变量。

问题:

APPLY = 100 # 全局变量
def fun():
    a = 10 # 局部变量
    return a + 100
print(APPLY)  # 可以正常输出全局变量的值
#print(a)  # 出现错误: name 'a' is not defined 试图在函数体外获取一个局部变量的值不行

输出:

100

表示我们在程序外部是无法直接访问一个局部变量的。

如何解决:

a = None
def fun():
    global a   # 不能直接对global a = 20 直接赋值,相当于在函数定义的时候进行赋值,但是此时变量还没有初始化,未开辟内存?所以需要分开来写
    a = 20
print(a) # None
fun()  # 调用fun使用全局变量a
print(a)  # 进行了修改了 20

输出:

None
20

参考文章:
1. 莫凡python教程
2. 为什么在python函数定义中不能给全局变量赋值?
3. python变量(全局变量,局部变量,类变量,实例变量)
4. ipython笔记

猜你喜欢

转载自blog.csdn.net/alxe_made/article/details/80497151