일부 파이썬 코드를 읽는 동안 사용자 정의 모듈을 가져 오는 두 가지 방법이있었습니다.파이썬에서 모듈을 가져 오는 두 가지 방법의 차이점은 무엇입니까?
첫 번째 것;
import config
두 번째 것;
from config import *
둘 사이의 차이점은 무엇입니까? 두 줄의 코드가 모두 있으면 어떻게됩니까? 부작용은 없습니까?
일부 파이썬 코드를 읽는 동안 사용자 정의 모듈을 가져 오는 두 가지 방법이있었습니다.파이썬에서 모듈을 가져 오는 두 가지 방법의 차이점은 무엇입니까?
첫 번째 것;
import config
두 번째 것;
from config import *
둘 사이의 차이점은 무엇입니까? 두 줄의 코드가 모두 있으면 어떻게됩니까? 부작용은 없습니까?
전체 내용이 stack
, over
및 flow
인 모듈이 unicorn
이라고 가정 해보십시오. 당신이 import unicorn
을 할 경우
unicorn.stack
, unicorn.over
및 unicorn.flow
으로 액세스 할 수 있습니다.import unicorn as U
을 수행하는 경우 U.stack
, U.over
및 U.flow
으로 액세스 할 수 있습니다.from unicorn import stack
을 수행하는 경우 의 stack
개체가 전역 변수 stack
에 복사됩니다.from unicorn import *
을 입력하면 stack
및 모듈의 다른 모든 전역 개체 (이름이 밑줄로 시작하는 비공개 개체 제외)가 전역 이름 공간에 복사됩니다. 괜찮 으면 좋겠지 만 나중에 unicorn
모듈을 업데이트하면 프로그램이 예기치 않게 작동하는 원인이 될 수 있습니다. 예를 들어 user
및 server
이라는 변수가있는 경우 super
, user
, server
및 fault
을 추가하는 unicorn
의 향후 업데이트로 인해 오작동 할 수 있습니다.from unicorn import stack, over, flow
을 입력하면 지정된 항목 만 복사되고 unicorn
에 추가 된 후에도 프로그램이 계속 작동합니다.from unicorn import stack as H
을 수행하는 경우 모듈에서 stack
이 표시되지만 프로그램의 전역 네임 스페이스에서는 H
이됩니다. 특정 기능이나 변수를 자주 사용하는 경우 80 자 미만으로 줄을 유지하는 데 도움이 될 수 있습니다.당신이 그것을하는 방법을 사용하려는 경우
import config
단지, 모듈 이름이 설정을 가져올 코드, 당신은 myname = config.getName()
같은 것을 사용해야합니다.
코드
from config import *
는 현재 네임 스페이스에 config
보낸 모든 것을 가져옵니다. 이제 config에서 getName 메서드를 사용하려는 경우 코드는 myname = getName()
과 같습니다. 두 개 이상의 모듈에서 동일한 이름으로 다른 메서드를 사용할 수 있으므로 항상 첫 번째 가져 오기 방법을 사용합니다. 첫 번째 수입 코드에 의해 수입 한을 대체 두 번째 방법으로 작업을 수행 할 때
import config
import mydata
print config.getName()#print Jim
print mydata.getName()#print Tom
같은, 마지막으로 가져온 코드가 getName
방법을 가져옵니다 :
getName
방법을 사용할 수 있습니다
from config import *
from mydata import *
print getName()#print Tom
현재 네임 스페이스는 두 번째 방법으로 오염되어 있습니다.
이것은 잘못되었습니다. 후자는'config'로 작동하지 않고'mydata'는 그 공간에 정의되어 있지 않습니다. 그것들은 아무 것도 출력하지 않을 것이고'print config.getName()'는 예외를 던질 것이다. –
@LegoStormtroopr 미안하지만 코드를 복사하고 수정하지 마십시오. :( – tianwei
두 번째 방법은 구성에있는 거의 모든 항목으로 현재 네임 스페이스를 오염시킵니다. – Marcin
@Marcin :이'config.variable'처럼 설정 모듈에서 선언 된 변수를 사용하고자 할 때,'from config import *'는 작동하지 않습니다. 이것은 큰 오염 물질이라 할지라도이 상황에서'import config'를 사용해야한다는 뜻입니까? 오염을 피할 수있는 더 좋은 방법이 있습니까? – user781486
[python.org] (https://docs.python.org/2/tutorial/modules.html#importing-from-a- 패키지)에서 사용할 수있는 예제와 함께 꽤 괜찮은 문서가 있습니다. 아래 투표는 내 것이 아니지만이 정보가 널리 사용 가능하고 다른 곳에서 그 사람을 찾지 않는다고 말하면 투표를 할 수 있습니다. – Minnow