2016-08-16 6 views
-1

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

하시겠습니까? 나는 항상 사용할 수 있다고 생각한다. sys 모듈을 설치하지 않고서는 python을 설치할 수 없다는 것을 의미한다. –

+0

나는 그것을 알아 냈다고 생각한다. 그 이상한 것은 "from import from *"이다. 그것이 목표 라이브러리가 가져온 것이 무엇이든지 가져 오는 것으로 보입니다. –

+1

항상 가져올 수 있습니다. 그렇다고해서 _implicitly_ 수입 된 것은 아닙니다. 현재 네임 스페이스에서이 모듈을 액세스 할 수있게하려면 명시적인 'import' 문이 필요합니다. [명백한 것은 암묵적인 것보다 낫다.] (https://www.python.org/dev/peps/pep-0020/). –

답변

2

첫 번째 스크립트는 이 아니며 단지 두 번째 스크립트를 가져 오는 것으로 보입니다. 그것은 다음과 같이 그것에서 * 수입 : 을 module_1에 :

from module_2 import * 

그리고 module_2에서

가 :

import sys 

이 간접적으로 SYS를 가져올 module_1됩니다. 내가

import module_2 

from module_2 import * 

을 변경하면 그것은 더 이상 작동하지 않습니다.