请帮忙看下这段程序变量使用,万分感谢!
如图,是一个tkinter代码片段,是可以正常运行的,我的问题是:
19行调用了一个selection方法,这个方法中使用了name_var变量,但是这个name_var变量在22行才被定义,那在前面调用的使用怎么没报错呢?
回答:
我没有用过这个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行不是调用吧,只是传入了函数的引用,并没有调用
以上是 请帮忙看下这段程序变量使用,万分感谢! 的全部内容, 来源链接: utcz.com/a/32683.html