首页 新闻 搜索 专区 学院

python这个变量为什么从函数跳出来后就成了空值

0
[已关闭问题] 关闭于 2018-10-05 17:08
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

还没有的主页 还没有 | 小虾三级 | 园豆:511
提问于:2018-09-30 23:21
< >
分享
所有回答(1)
0

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

不清楚为什么回答的内容不能插入代码,凑乎看吧

丁壮 | 园豆:219 (菜鸟二级) | 2018-10-12 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册