【发布时间】:2016-11-13 09:59:29
【问题描述】:
大家好,我不明白为什么在调用find_average() 时,全局范围内的total = 20 被用于find_total() 函数,而不是封闭范围内的total = 10?
提前感谢您的任何见解和帮助!
total = 20
def find_total(l):
return total
def find_length(l):
length = len(l)
return length
def find_average(l):
total = 10
return find_total(l) / find_length(l)
average = find_average(example_list)
【问题讨论】:
-
example_list 的内容是什么?
-
total = 10 创建一个新变量,该变量仅在
find_avarage中可见,在从它调用的函数中不可见 -
它应该是一个数字列表
-
@Jens 不是
find_average被认为是find_total的封闭范围吗?据我了解,python 在本地范围中查找变量定义,然后如果不存在,则查找变量的封闭范围。这是正确的还是我弄错了?谢谢! -
find_total的封闭范围是模块。范围由定义范围定义,而不是调用范围。
标签: python scope nested global local