前言:
而今各位老铁们对“pythonlocal”都比较关心,朋友们都想要分析一些“pythonlocal”的相关内容。那么小编在网络上搜集了一些关于“pythonlocal””的相关内容,希望小伙伴们能喜欢,朋友们快快来学习一下吧!python嵌套函数的内部函数可以引用嵌套作用域(外部函数)的变量,但是不能修改变量值。
示例
# 可以引用嵌套作用域变量>>> def outf(): a='梯阅线条' def inf(): print(a) return inf>>> f=outf()>>> f()梯阅线条# 不可修改嵌套作用域变量值>>> def outf(): a='梯阅线条' def inf(): print(a) a='tyxt' return inf>>> f=outf()>>> f()Traceback (most recent call last): File "<pyshell#28>", line 1, in <module> f() File "<pyshell#26>", line 4, in inf print(a)UnboundLocalError: local variable 'a' referenced before assignment1.1 python的nonlocal语句基础
python中如果要修改嵌套作用域变量的值,就要用nonlocal语句。
用法
def inf(): nonlocal v1,v2,...
描述
python的nonlocal语句用于嵌套函数的内部函数;
nonlocal后面接变量名,此变量必须在外部函数已经被赋值过;
nonlocal后面接的变量,不能在内部函数第一次赋值;
nonlocal修饰的变量,只会在外部函数搜索作用域(嵌套作用域),不会搜索全局和内置作用域。
示例
>>> def outf(): v1='梯阅线条' v2='tyxt' def inf(): nonlocal v1,v2 print(v1,v2) v1='nonlocal1' v2='nonlocal2' print(v1,v2) return inf>>> f=outf()>>> f()梯阅线条 tyxtnonlocal1 nonlocal2# 外部函数未定义nonlocal变量,在内部函数定义并且声明nonlocal变量,报变量必须在nonlocal作用域(嵌套作用域,外部函数作用域)定义。>>> def outf(): def inf(): v1='梯阅线条' nonlocal v1 SyntaxError: name 'v1' is assigned to before nonlocal declaration# 外部函数未定义nonlocal变量,在内部函数声明nonlocal变量,报nonlocal变量未找到>>> def outf(): def inf(): nonlocal v1 SyntaxError: no binding for nonlocal 'v1' found# nonlocal修饰变量不会搜索全局作用域,包nonlocal变量未找到>>> v1='梯阅线条'>>> def outf(): def inf(): nonlocal v1 SyntaxError: no binding for nonlocal 'v1' found1.2 python的nonlocal应用场景
python的nonlocal用于编号。
示例
>>> def outf(beg): num=beg def inf(name): nonlocal num print(name,num) num+=1 return inf>>> f=outf(1)>>> f('张三')张三 1>>> f('李四')李四 2>>> f('王五')王五 3
python的nonlocal用于计算平均值。
>>> def outf(beg): count=0 total=beg def inf(num): nonlocal count,total count+=1 total+=num return total/count return inf>>> f=outf(0)>>> f(10)10.0>>> f(20)15.0>>> f(30)20.0>>> f(50)27.5
2 END
本文首发微信公众号:梯阅线条,
更多内容参考python知识分享或软件测试开发目录。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #pythonlocal