2016-08-16 295 views
-1

我有2个python脚本,都使用sys.stdout,sys.exit()等等。在一个脚本中,PyCharm突出显示“import sys”为灰色,(意思是从来没有使用过),如果我删除import语句,该程序运行良好,包括sys.stdout和sys.exit()。为什么我不需要导入sys?

然而,第二模块不突出“进口SYS”为灰色,如果我尝试不使用该语句运行它,我得到sys.stdout的第一次出现了一个错误:

NameError: name 'sys' is not defined 

我已经抬起头来SYS的官方文档,它说 “该模块提供了访问由解释和功能使用或维护一些变量与解释强相互作用。它始终可用。

然而, ,大部分指南或指导如何使用sys告诉你导入。

那么,我必须导入吗? 为什么一个程序需要,而不是另一个?这两个计划之间

可能重要的区别:

一个程序有一个主要功能,并导入其他程序。这是一个不需要导入sys的程序。 当它将另一个作为模块导入时,它本质上可能导入sys?

+3

你这样做。我认为'它总是可用'只是意味着你不能安装python而不安装sys模块。 –

+0

我想我已经明白了,它的奇怪之处在于“from ____ import *”。似乎这会导致它导入任何目标库导入。 –

+1

它始终可用于导入。这并不意味着它被导入_implicitly_。您仍然需要显式的'import'语句才能使该模块在当前命名空间中可访问。 [显式优于隐式](https://www.python.org/dev/peps/pep-0020/)。 –

回答

2

看来,第一个脚本不是只是导入第二个脚本;它进口*从它,就像这样: 在module_1:

from module_2 import * 

而且在module_2:

import sys 

这将导致module_1导入SYS,间接的影响。如果我改变

from module_2 import * 

import module_2 

那么它不再起作用。

相关问题