问答

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

作者:admin 2021-06-23 我要评论

如图,是一个tkinter代码片段,是可以正常运行的,我的问题是: 19行调用了一个selection方法,这个方法中使用了name_var变量,但是这个name_var变量在22行才被...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

###

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

###

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

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

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

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

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

###

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 请帮忙看下这段程序变量使用,万分感谢

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

  • es6的 for(var of)语法怎么适应es5

    es6的 for(var of)语法怎么适应es5

  • rocketmq connect to <47.95.20

    rocketmq connect to <47.95.20

  • 原生js如何监听数组长度

    原生js如何监听数组长度

腾讯云代理商
海外云服务器