def func1(): name = 1 print(func1) # <function func1 at 0x101a03d08> print(name) # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # NameError: name 'name' is not defined
test = 'global variable' def scope_test(): def inner(): nonlocal test print(test) scope_test() # SyntaxError: no binding for nonlocal 'test' found
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam # 递归向上寻找上层函数命名空间中的spam变量
spam = "nonlocal spam"
def do_global():
global spam # 在全局变量中寻找spam变量,没有则创建
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam) # 输出本地变量 spam
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
<SPAN style="FONT-SIZE: 14px">1 After local assignment: test spam After nonlocal assignment: nonlocal spam After global assignment: nonlocal spam In global scope: global spam </SPAN>
def fn():
a = 1
def closure():
nonlocal a
a += 1
print(a)
return closure
inner = fn()
print(inner.__closure__) # (<cell at 0x10240b408: int object at 0x100277bc0>,)
inner() # 2
inner() # 3
a = 1 def local_test(): a += 1 print(a) local_test() # UnboundLocalError: local variable 'a' referenced before assignment print(b) # NameError: name 'b' is not defined
name = "lzl" def f1(): print(name) def f2(): name = "eric" f1() f2() # lzl
lambda x: x + 1 # 函数功能类型于下面的函数 def _(x): return x + 1
li = [lambda :x for x in range(10)] print(li[0]())
def fn(): return x li = [] for x in range(10): li.append(fn) li[0]() # fn() -> 9,根据变量搜索规则,x在函数中没有定义,在全局变量中查找
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有