我不明白为什么我可以在这里使用系列变量:
def calculate_mean():
series = []
def mean(new_value):
series.append(new_value)
total = sum(series)
return total/len(series)
return mean
但我不能在这里使用 count 和 Total 变量(赋值前引用的变量):
def calculate_mean():
count = 0
total = 0
def mean(value):
count += 1
total += value
return total/count
return mean
仅当我使用像这样的非本地关键字时它才有效:
def calculate_mean():
count = 0
total = 0
def mean(value):
nonlocal count, total
count += 1
total += value
return total/count
return mean
这就是我使用calculate_mean()的方式
mean = calculate_mean()
print(mean(5))
print(mean(6))
print(mean(7))
print(mean(8))
您面临的是,在一种情况下,变量中有一个可变对象,并且您对该对象进行操作(当它是列表时) - 而在另一种情况下,您正在操作一个不可变对象并使用赋值运算符(增强分配+=
) .
默认情况下,Python 会定位所有非局部变量read并相应地使用 then - 但如果在内部作用域中分配了一个变量,Python 会假定它是一个局部变量(即内部函数的局部变量),除非它被显式声明为非局部变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)