
1、自由变量是指未绑定到本地作用域的变量。如果自由变量绑定的值是可变的,变量仍然可以在封闭包中操作。如果是不可变的(数字、字符串等。),在封闭包中重新绑定自由变量会出错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def make_averager():
count = 0
total = 0
def averager(new_value):
count += 1
total += new_value
return total / count
return averager
>>> avg = make_averager()
>>> avg(10)
Traceback (most recent call last):
...
UnboundLocalError: local variable 'count' referenced before assignment
|
2、为了将变量标记为自由变量,可以使用nonlocal语句进行声明,nonlocal语句可以解决。
1 2 3 4 5 6 7 8 9 | def make_averager():
count = 0
total = 0
def averager(new_value):
nonlocal count, total # 声明count、total为自由变量
count += 1
total += new_value
return total / count
return averager
|
以上就是python自由变量的介绍,希望对大家有所帮助。更多Python学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。