为什么我不需要导入 sys?
Why don't I need to import sys?
我有 2 个 python 脚本,都使用 sys.stdout、sys.exit() 等。在一个脚本中,PyCharm 将 "import sys" 突出显示为灰色,(意味着它从未被使用过),如果我删除导入语句,程序工作正常,包括 sys.stdout 和 sys.exit().
但是,第二个模块不会将 "import sys" 突出显示为灰色,如果我在没有该语句的情况下尝试 运行 它,我会在第一次出现 sys.stdout 时出错:
NameError: name 'sys' is not defined
我查了sys的官方文档,里面说
"This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available."
然而,大多数关于如何使用 sys 的指南或说明都会告诉您导入。
所以,我是否必须导入它? 为什么一个程序需要,而另一个不需要?
两个程序之间可能存在的重要差异:
一个程序有一个主要功能,并导入另一个程序。这是不需要导入 sys 的那个。 也许它在将另一个作为模块导入时固有地导入了 sys?
好像第一个脚本没有只是导入第二个脚本;它从中导入 * ,如下所示:
在 module_1:
from module_2 import *
并在 module_2 中:
import sys
这会导致 module_1 间接导入 sys。如果我改变
from module_2 import *
到
import module_2
然后它不再有效。
我有 2 个 python 脚本,都使用 sys.stdout、sys.exit() 等。在一个脚本中,PyCharm 将 "import sys" 突出显示为灰色,(意味着它从未被使用过),如果我删除导入语句,程序工作正常,包括 sys.stdout 和 sys.exit().
但是,第二个模块不会将 "import sys" 突出显示为灰色,如果我在没有该语句的情况下尝试 运行 它,我会在第一次出现 sys.stdout 时出错:
NameError: name 'sys' is not defined
我查了sys的官方文档,里面说 "This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available."
然而,大多数关于如何使用 sys 的指南或说明都会告诉您导入。
所以,我是否必须导入它? 为什么一个程序需要,而另一个不需要?
两个程序之间可能存在的重要差异:
一个程序有一个主要功能,并导入另一个程序。这是不需要导入 sys 的那个。 也许它在将另一个作为模块导入时固有地导入了 sys?
好像第一个脚本没有只是导入第二个脚本;它从中导入 * ,如下所示: 在 module_1:
from module_2 import *
并在 module_2 中:
import sys
这会导致 module_1 间接导入 sys。如果我改变
from module_2 import *
到
import module_2
然后它不再有效。