importos.path를 사용해야 합니까, importos를 사용해야 합니까?
공식 문서에 따르면,os.path
다입듈▁thus다니. 그렇다면,어떤?그렇다면, 어떤 수입 방법이 선호됩니까?
# Should I always import it explicitly?
import os.path
아니면...
# Is importing os enough?
import os
" 져오기에 "".os
제게 도움이 됩니다."알아요, 지금 저에게도 잘 작동합니다(파이썬 2.6 기준).제가 알고 싶은 것은 이 문제에 대한 공식적인 권고 사항입니다.그래서 이 질문에 답하시면 추천서를 올려주세요.
os.path
재미있는 방식으로 작동합니다.▁like처럼 보입니다.os
.path
는 그러나실는로제는▁but로.os
를 사용하여 마법을 수행하는 일반 모듈입니다.sys.modules
를 놓다os.path
다음과 같은 상황이 발생합니다.
을 Python에 합니다.
sys.modules
스크립트의 이름에 바인딩되지는 않지만 이미 만들어진 모듈을 가져올 때 액세스할 수 있습니다.sys.modules
모듈이 캐시되는 딕트입니다. 때 을 가져오면 가 져 때 이 해 모 다 듈 저 음 인 스 를 가 니 옵 져 턴 다 스 된 장 에 은 당 경 올 가 우 져 온 로 어 미 가 딘▁storedsys.modules
.
os
는 Python이 시작될 때 로드되는 모듈 중 하나입니다.을 합니다.path
OS별 경로 모듈의 특성입니다.은 니합다주를 합니다.
sys.modules['os.path'] = path
당신이 " 할수있록도당이신"록있"를할 수 .import os.path
마치 서브 모듈인 것처럼.
나는 생각하는 경향이 있습니다.os.path
모듈에 있는 것보다 사용하고 싶은 모듈로서, 그래서 그것이 실제로는 패키지의 하위 모듈이 아님에도 불구하고.os
저는 그것이 그것인 것처럼 그것을 수입하고 항상 그렇게 합니다.이것은 방법과 일치합니다.os.path
문서화되어 있습니다.
부수적으로, 이런 종류의 구조는 많은 파이썬 프로그래머들이 모듈, 패키지 및 코드 구성에 대해 초기에 혼란을 일으켰다고 생각합니다.이것은 정말로 두 가지 이유 때문입니다.
을 하면.
os
패키지로서 그리고 당신이 할 수 있다는 것을 알고 있습니다.import os
인 "Submodule"에 수 .os.path
나중에 당신이 할 수 없을 때 놀랄 수도 있습니다.import twisted
으로 액세스할 수 있습니다.twisted.spread
수입하지 않고.그것은 혼란스럽습니다.
os.name
인 것, 평한것, 끈고, 그리범입니다.os.path
듈모항다니입. 나는 빈 상빈패로 를 합니다.__init__.py
동일한 수준에서 항상 한 가지 유형(모듈/패키지 또는 다른 것)을 사용할 수 있도록 파일을 참조하십시오.몇몇 큰 파이썬 프로젝트는 이러한 접근 방식을 취하며, 이는 더 구조화된 코드를 만드는 경향이 있습니다.
Tim Peters의 PEP-20에 따르면, "묵시적인 것이 암시적인 것보다 낫다"와 "가독성이 중요하다".당신이 필요한 것이 있다면,os
모듈이 아래에 있습니다.os.path
,import os.path
당신이 정말로 아끼는 것이 무엇인지를 다른 사람들에게 더 분명하게 알려줄 것입니다.
마찬가지로, PEP-20은 또한 "복잡한 것보다 간단한 것이 낫다"고 말하기 때문에, 만약 당신이 더 일반적인 것 아래에 상주하는 것도 필요하다면.os
우산.import os
선호할 수 있습니다.
답변: 최종답변:import os
및사를 합니다.os.path
마하지마import os.path
직접적으로.
모듈 자체의 설명서를 참조하십시오.
>>> import os
>>> help(os.path)
...
Instead of importing this module directly, import os and refer to
this module as os.path. The "os.path" name is an alias for this
module on Posix systems; on other systems (e.g. Mac, Windows),
os.path provides the same operations in a manner specific to that
platform, and is an alias to another module (e.g. macpath, ntpath).
...
흥미롭게도 os.path를 가져오면 모든 os를 가져오게 됩니다. 대화형 프롬프트에서 다음을 시도해 보십시오.
import os.path
dir(os)
결과는 방금 OS를 가져온 것과 동일합니다.이는 os.path가 사용 중인 운영 체제에 따라 다른 모듈을 참조하므로 python이 os를 가져와 경로에 대해 로드할 모듈을 결정하기 때문입니다.
일부 모듈을 사용하여 다음과 같이 말합니다.import foo
노출 안 함foo.bar
그래서 특정 모듈의 디자인에 정말로 달려있다고 생각합니다.
일반적으로 필요한 명시적 모듈을 가져오는 것이 조금 더 빨라야 합니다.내 컴퓨터에서:
import os.path
: 7.54285810068e-06
import os
: 9.21904878972e-06
이 시간들은 꽤 무시해도 될 만큼 충분히 가깝습니다.은 프그램다모사할의 해야 할 .os
지금 아니면 나중에, 그래서 보통 2마이크로초를 희생하고 사용하는 것이 이치에 맞습니다.import os
나중에 이 오류를 방지할 수 있습니다.를 전체적으로 하는 것에 하지만, 왜 은 os를 선호하는지 알 수.import os.path
기술적으로 더 효율적이고 코드의 독자들에게 그것이 유일한 부분이라는 것을 전달하는 것.os
모듈을 사용해야 합니다.본질적으로 제 마음속에 스타일 질문으로 요약됩니다.
여기서 합니다: 상은식여작동다니합서기.os
이고, 는 모듈입니다.os.path
모듈이기도 합니다.사용할 모듈만 가져오면 됩니다.
,
os
Import한 후 모듈런, 가오다져기음을 가져옵니다.os
.,
os.path
Import한 후 모듈런, 가오다져기음을 가져옵니다.os.path
.두 모듈 모두에서 기능을 사용하려면 두 모듈을 모두 가져오십시오.
import os import os.path
참조용:
Lib/idlelib/rpc.py 사용
os
수입 및수품입os
.Lib/idlelib/idle.py 사용
os.path
수입 및수품입os.path
.Lib/esurepip/init.py 은 둘 다 사용하고 둘 다 가져옵니다.
확실한 참조를 찾을 수 없지만 os.walk의 예제 코드는 os.path를 사용하지만 os만 가져오는 것을 알 수 있습니다.
언급URL : https://stackoverflow.com/questions/2724348/should-i-use-import-os-path-or-import-os
'programing' 카테고리의 다른 글
AbstractDynamicObject$CustomMessageMissingMethodException 오류가 발생하는 이유는 무엇입니까? (0) | 2023.07.17 |
---|---|
1D Numpy 배열에서 Numpy를 사용하여 로컬 최대값/minima 찾기 (0) | 2023.07.17 |
MongoDB 시작 실패 - ***fassert() 실패 후 중단 (0) | 2023.07.17 |
보기를 사용한 쿼리에서 잠금 테이블 힌트와 함께 사용 - 보기 내에서 전파됩니까? (0) | 2023.07.17 |
파일 경로를 호출하지 않고 파일 열기 (0) | 2023.07.17 |