我有2个python脚本,都使用sys.stdout,sys.exit()等。在一个脚本中,PyCharm将“import sys”突出显示为灰色(意味着它从未使用过),如果我删除了导入声明,程序运行得很好,包括sys.stdout和sys.exit()。
但是,第二个模块没有将“import sys”突出显示为灰色,如果我尝试在没有该语句的情况下运行它,我会在第一次出现sys.stdout时出错:
NameError: name 'sys' is not defined
我查了sys的官方文档,其中说 “此模块提供对解释器使用或维护的一些变量以及与解释器强烈交互的函数的访问。始终可用。”
然而,大多数关于如何使用sys的指南或说明都会告诉您导入。
那么,我是否必须导入它? 为什么一个程序需要,而另一个程序不需要?
两个计划之间可能存在重要差异:
一个程序具有主要功能,并导入另一个程序。这是不需要导入sys的那个。 当它将另一个作为模块导入时,它本身可能导入sys?
答案 0 :(得分:2)
似乎第一个脚本只是导入第二个脚本;它从中导入*,如下所示: 在module_1:
from module_2 import *
在module_2中:
import sys
这会导致module_1间接导入sys。如果我改变
from module_2 import *
到
import module_2
然后它就不再起作用了。