【问题标题】:Why is `kivy` seen as a variable rather than a module?为什么 `kivy` 被视为一个变量而不是一个模块?
【发布时间】:2020-05-11 18:51:08
【问题描述】:

以下代码运行没有错误。

import kivy
def main():
    try:
        kivy.require('1.9.2')
    except Exception as e:
        import traceback
        traceback.print_exc()
        #import kivy.base
if __name__ in ('__main__'):
    main()

但是,如果我取消注释第 8 行,它会打印:

 Traceback (most recent call last):
   File "main.py", line 4, in main
     kivy.require('1.9.2')
 UnboundLocalError: local variable 'kivy' referenced before assignment

我有两个问题:

  1. 为什么第 4 行的 kivy 被识别为变量而不是模块?
  2. 第 8 行如何影响第 4 行是否引发异常?

【问题讨论】:

标签: python import scope kivy


【解决方案1】:

我认为您已经达到了所描述的标准全局/本地行为,例如in this answer,但由于您通过导入分配给变量这一事实而略有混淆。

请注意,kivy 变量并不是因为您通过导入分配给它而特别,它仍然是一个遵循正常重新分配和引用规则的变量名称。

【讨论】:

  • 我希望得到更详细的答案,但我会接受。你是对的 - 这是全球/本地问题。为了让它达到我的预期,我需要在 kivy.require() 行之前添加 global kivy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
相关资源
最近更新 更多