python - 为什么 `kivy` 被视为一个变量而不是一个模块?
问题描述
以下代码运行没有错误。
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
我有两个问题:
- 为什么
kivy
第 4 行被识别为变量而不是模块? - 第 8 行如何影响第 4 行是否引发异常?
解决方案
我认为您已经达到了例如this answer中描述的标准全局/本地行为,但由于您通过导入分配给变量这一事实而略有混淆。
请注意,kivy
变量并不是因为您通过导入分配给它而特别,它仍然是遵循正常重新分配和引用规则的变量名称。
推荐阅读
- swift - 何时应使用异步方法的合适挂钟时间阈值?
- firebase - Auth0 和 Firebase 令牌的区别(OIDC 与 Firebase 令牌)
- python - 在 python 中使用 Selenium 和来自 Docker 容器的无头 Chrome
- android - Unity ARFoundation Gradle 构建失败 - last-build.bin 访问被拒绝
- c - C - 请求非结构或联合的成员
- r - R:导入 Json 时出错
- jenkins - “hudson.plugins.git.GitException”错误,无法从 git 获取
- nuxt.js - 如何记录nuxt服务器端网络请求?
- apache-nifi - 如何在数据转换模板中增量/更新数据
- html - HTML浏览器不打印新行