每个函数都有自己的作用域。它从函数本地、内部范围开始,然后向外通过封闭函数,直到到达全局(模块)范围。此顺序取决于函数的范围
定义于
不
用于变量查找。
find_total
,这是
<module>.find_total.<locals>
和
<module>
因此,无论何时
查找_总计
运行时,它将查找
total
在其本地范围内,失败,并在全局范围内查找。那里
total == 20
.
内部范围
find_average
仅限于
查找平均值
。都不是全局范围,
查找_总计
或
find_length
查找平均值
到
查找_总计
,应该通过一个参数来完成。
或者,如果
查找_总计
可以在内部定义
查找平均值
这边
查找_总计
通过搜索序列解析名称
<module>.find_average.<locals>.find_total.<locals> -> <module>.find_average.<locals> -> <module>
.
total = 20
def find_length(l):
length = len(l)
return length
def find_average(l):
total = 10
def find_total(l):
return total
return find_total(l) / find_length(l)
average = find_average(example_list)
这将使
查找_总计
无法接近
从外部
查找平均值
!