Python中函数内定义的变量为何无法在函数外部访问?
Python函数内变量无法在外部访问的原因
这是Python的变量作用域规则在起作用,具体原因如下:
- 函数内部定义的变量属于局部作用域:你在
sum函数里定义的test是局部变量,它的生命周期只限于函数执行过程中。函数执行完毕后,这个变量就会被Python的垃圾回收机制清除,外部完全访问不到它。 - 全局作用域和局部作用域是隔离的:当你在函数外执行
print(test)时,Python会在全局作用域里找test变量,但这个变量从来没在全局范围内定义过,自然会报NameError。 - 函数内部打印能成功的原因:把
print(res)放在函数内部时,它访问的是当前局部作用域里的res变量,这时候函数还在执行,变量还存在,所以能正常输出计算结果。
如果想在函数外部获取函数内的计算结果,正确的做法是用return语句返回值:
def sum(x, y): test = x + y return test # 接收函数返回的结果 result = sum(1, 2) print(result) # 输出3
除非有特殊需求,否则不建议用global关键字把局部变量声明为全局变量——这种做法会破坏作用域的隔离性,容易引发难以排查的bug。
内容的提问来源于stack exchange,提问作者Sharlotte Lemmings
相关产品推荐
相关产品推荐

