def Get_tittle(): r = 'XXX' tag = False Wnd = '' def foo(hwnd, mouse): if IsWin(hwnd): if re.findall(r,GetText(hwnd)): print('已找到',hwnd) global tag,Wnd Wnd = hwnd #这里成功赋值 tag = True EnumWindows(foo, 0) #但到这里Wnd就成了空值,为什么? return tag, Wnd
Wnd = hwnd 这里成功赋值
为什么EnumWindows(foo, 0) 到这里Wnd就成了空值,用的是全局变量。
那个tag都可以return
python中的这类实现需要使用闭包,python3中的闭包对不可变类型,可以使用nonlocal:
你现在的脚本可以这样实现:
def Get_tittle():
r = 'XXX'
tag = False
Wnd = ''
def foo(hwnd):
global tag,Wnd
Wnd =hwnd
tag = True
return Wnd,tag
return foo
a=Get_tittle()
print(a(10))
print(a(30))
python3的实现方式:
def Get_tittle():
r = 'XXX'
tag = False
Wnd = ''
def foo(hwnd):
nonlocal tag,Wnd
Wnd =hwnd
tag = True
return Wnd,tag
return foo
不清楚为什么回答的内容不能插入代码,凑乎看吧