请帮忙看下这段程序变量使用,万分感谢!

发布于 2022-09-12 03:42:11 字数 212 浏览 21 评论 0

如图,是一个tkinter代码片段,是可以正常运行的,我的问题是:
19行调用了一个selection方法,这个方法中使用了name_var变量,但是这个name_var变量在22行才被定义,那在前面调用的使用怎么没报错呢?
微信截图_20200714223410.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千と千尋 2022-09-19 03:42:11

我没有用过这个tkinter库,不过看你的代码在19行并没有调用函数selection,只是当做一个参数传入其他函数中,你可以尝试在19行之前调用selection(),如果不传参肯定会报错的

安静 2022-09-19 03:42:11

我并没有深入了解过 tkinter, 但是可以看出来 selection 在这里应该是一个事件处理的回调函数, 响应一个 Combobox 被选中的事件, 所以它的执行实际上是滞后的.

由于 Python 是解释运行(产生的.pyc是平台无关的字节码), 所以实际上在运行时, selection 函数才会去访问 name_var 这个全局变量, 所以确实是可用的.

你可以自己运行这两个简化的例子:

def test():
    print(hello)
    
test()  # 报错, 全局变量未定义
def test():
    print(hello)
    
hello = "world"
test()  # 不会报错, 正常运行

只是这种风格代码的确写的不好, 在绝大多数语言中, 使用全局变量都不是一个良好的习惯. (很容易被不清楚的地方意外引用, 所以不建议使用)

゛清羽墨安 2022-09-19 03:42:11

19行不是调用吧,只是传入了函数的引用,并没有调用

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文