나는 약간 혼란을 먼저 지적하고 싶다. __file__
은 와일드 카드가 아니며 특성입니다. 이중 밑줄 특성과 메서드는 관례에 따라 "특별"한 것으로 간주되며 특수한 용도로 사용됩니다.
http://docs.python.org/reference/datamodel.html에는 특수한 방법과 속성이 많이 있지만 전부는 아닙니다.
이 경우 __file__
은 모듈 (모듈 객체)의 속성입니다. 파이썬에서는 .py
파일이 모듈입니다. 따라서 import amodule
은 다른 상황에서 다른 것을 의미하는 __file__
의 속성을 갖게됩니다.
이 문서에서 촬영 :
__file__
그것이 파일로부터로드 된 경우, 모듈,로드 된 파일의 경로이다. 인터프리터에 정적으로 링크 된 C 모듈의 경우 __file__
속성이 없습니다 ( ). 확장 모듈이 공유 라이브러리에서 동적으로로드 된 경우 공유 라이브러리 파일의 경로 이름은 입니다.
모듈이 자신의 __file__
속성을 글로벌 네임 스페이스에 액세스하고 있습니다.
# file: test.py
print globals()
print __file__
을 실행 :
액션 시도에서이 문제를 확인하려면
python test.py
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__file__':
'test_print__file__.py', '__doc__': None, '__package__': None}
test_print__file__.py
물론, 그것은 와일드 카드 아니다. – tripleee
그것의 "마술"변수; 와일드 카드는 아주 다른 것을 의미합니다. –