gpt4 book ai didi

python import 语句在函数中失败

转载 作者:太空宇宙 更新时间:2023-11-03 18:32:26 24 4
gpt4 key购买 nike

我有一个 python 模块,需要能够在 Windows 和 Linux 上运行。运行时它会响应某些键盘“热键”。这是一个 python 3.3 脚本。

在我的类构造函数中,我执行以下操作:

self.setup_stdin()

函数setup_stdin是这样的:

def setup_stdin(self):
self.osname = os.name
if self.osname == 'posix':
self.setup_posix_stdin()
elif self.osname == 'nt':
self.setup_nt_stdin()

当我在 Linux 上运行时,setup_posix_stdin 没有任何问题,它只是使 stdin 非阻塞,以便我可以处理击键。

setup_nt_stdin 如下:

def setup_nt_stdin(self):
import msvcrt

但是,当我在 Windows 7 上运行时,我的程序会崩溃

NameError: global name 'msvcrt' is not defined

为了解决这个问题,当我在 Windows 上运行时,我将 import 语句移至文件顶部,并用 pass 替换 setup_nt_stdin 函数体,效果很好。

我以为我可以从函数导入。该函数位于类内部,我还缺少其他语法吗?

最佳答案

import 语句仅在本地范围内绑定(bind)导入模块的名称。

要解决这个问题,你可以这样做:

def setup_nt_stdin(self):
global msvcrt
import msvcrt

尽管考虑到您可以多次导入某些内容而不再执行它,并且在其他地方实际使用名称msvcrt之前,您将需要 guard 来检查操作系统,在每个需要它的特定于 Windows 的函数中导入 msvcrt 可能更有意义。

关于python import 语句在函数中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22179279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com