2
파이썬에서 자신의 패키지를 작성할 때 __init__.py
에 os
, sys
과 같은 가져 오기가 있어야합니까? 아니면 이들을 사용중인 파일 내에서 가져와야합니까?__init__.py도 파이썬 모듈 가져 오기를 포함해야합니까?
파이썬에서 자신의 패키지를 작성할 때 __init__.py
에 os
, sys
과 같은 가져 오기가 있어야합니까? 아니면 이들을 사용중인 파일 내에서 가져와야합니까?__init__.py도 파이썬 모듈 가져 오기를 포함해야합니까?
모듈을 사용하는 모듈에서 모듈을 가져옵니다.
__init__.py
에 import os
을 배치하면 패키지의 글로벌 네임 스페이스에 os
을 둘 것입니다,하지만 os
을 사용하는 모듈의 네임 스페이스에 영향을주지 않습니다. 전역 네임 스페이스는 모듈이나 패키지에서 공유되지 않으므로 os
을 사용하는 모듈에서 가져 오지 않은 경우 NameError
을 가져옵니다.
'import os'를'__init __. py '에 넣는 것은'from my_awesome_package import * '를하는 모든 모듈에 영향을 미칠 것입니다. 왜냐하면 이제 네임 스페이스에'os' 모듈이 가능한 함수 나 전역 변수에 예기치 않게 영향을 미치기 때문입니다. '*'를 사용하는 것은 눈살을 찌푸리게합니다. 충분한 사람들은 여전히 그것을 사용하고 꾸러미 제작자는 그것도 배려해야합니다. –
@ sigmavirus24 : 많은 모듈과 패키지는'from xxx import *'코딩 스타일을 지원하도록 특별히 설계되었습니다. '__all__'이라는 이름의 모듈 또는 패키지 수준의 변수를 정의합니다.이 변수에는 정의 된 항목의 문자열이 들어 있습니다 (언급되지 않은 항목 제외). '__init_.py' 파일에서 자주 생성되는 패키지. – martineau
@martineau 잘 알고 있습니다. OP는 저것을 언급하는 것 외에 다른 것을 언급하지 않고 거기에 넣는 것에 대해 물었습니다. –