2016-08-16 285 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 

那麼它不再起作用。

相關問題