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

2018-10-01 14:35:43 +08:00
 angel725
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

1707 次点击
所在节点    问与答
5 条回复
codechaser
2018-10-01 14:46:24 +08:00
手机排版根本看不下去,坐等别人解释
Wincer
2018-10-01 14:48:11 +08:00
你这里不应该用 `global`,应该用 `nonlocal`
densuc
2018-10-01 14:50:49 +08:00
大致懂了 应该是吧局部变量的地址赋值给了全局变量
局部变量被销毁了 全局变量就空了
你在给 wnd 赋值的时候加个切片应该就可以了(´Д⊂ヽ
code42
2018-10-01 14:58:48 +08:00
code42
2018-10-01 15:00:51 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/494402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX