Python变量作用域详解:全局与局部变量的区别及global关键字用法
本文深入解析Python中变量作用域的核心概念,区分全局变量与局部变量的定义与作用范围。重点讲解如何在函数内部通过global关键字修改全局变量,以及列表和字典等可变对象在作用域中的特殊行为与赋值限制,帮助开发者避免常见的变量引用错误。
Python变量作用域基础
变量作用域
在Python中,通常在函数外部定义的变量被称为全局变量,而在函数内部定义的变量则被称为局部变量。
全局变量可以在程序的任何作用域中被读取,而局部变量仅在其定义的函数内部可见和可读。
当函数需要读取变量时,Python会优先查找函数内部定义的局部变量;如果未找到,则继续向上查找全局变量。
全局变量的读写规则与global关键字
全局变量
读取操作:在任何作用域中均可访问。
赋值操作:若需在函数内修改全局变量,必须使用global关键字声明。
对于字典和列表等可变对象,可以直接修改其内部元素,无需使用global关键字;但若尝试重新赋值整个变量,则必须使用global。
命名规范:通常建议将全局变量全部大写,以区别于局部变量。
代码示例与可变对象处理
例如
name = 'Tim' #全局变量
def f1():
age = 18 #局部变量
print(age,name)
def f2():
age=19 #局部变量
f1()
f2()
>>>
18 Tim
19 Tim
我们可以在函数内部定义并修改全局变量,具体实现如下所示。
name = 'Tim' #全局变量
def f1():
age = 18 #局部变量
global name #定义全局变量
name = 'Eric'
print(age,name)
f1()
print(name)
全局变量默认具有可读性。如果需要在函数内部改变全局变量的值,必须使用global关键字进行声明。
特殊情况:列表和字典允许直接修改其内容(如append),但不能直接重新赋值整个变量。若需重新赋值,必须在函数内部使用global关键字声明该全局变量。
NAME = ['Tim','mike'] #全局变量
NAME1 = ['Eric','Jeson'] #全局变量
NAME3 = ['Tom','jane'] #全局变量
def f1():
NAME.append('Eric') #列表的append方法可改变外部全局变量的值
print('函数内NAME: %s'%NAME)
NAME1 = '123' #重新赋值不可改变外部全局变量的值
print('函数内NAME1: %s'%NAME1)
global NAME3 #如果需要重新给列表赋值,需要使用global定义全局变量
NAME3 = '123'
print('函数内NAME3: %s'%NAME3)
f1()
print('函数外NAME: %s'%NAME)
print('函数外NAME1: %s'%NAME1)
print('函数外NAME3: %s'%NAME3)
>>>
函数内NAME: ['Tim', 'mike', 'Eric']
函数内NAME1: 123
函数内NAME3: 123
函数外NAME: ['Tim', 'mike', 'Eric']
函数外NAME1: ['Eric', 'Jeson']
函数外NAME3: 123
至此,关于Python变量作用域的讲解结束。如需了解更多相关内容,请查阅本站过往文章或继续浏览后续文章,感谢您的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













