[python] 파이썬에서 파일 이름을 가져 오는 방법은 숫자로 시작합니다.

기본적으로라는 파일이 있으며 파일 8puzzle.py을 다른 파일로 가져오고 싶습니다 (동일한 폴더에 있으며 파일이 제공되므로 파일 이름을 변경할 수 없습니다). 어쨌든 파이썬에서 이것을 할 수 있습니까? 나는 평소 방법을 시도했지만 from 8puzzle import *오류가 발생합니다.

오류 :

>>> import 8puzzle
  File "<input>", line 1
    import 8puzzle
           ^
SyntaxError: invalid syntax
>>> 



답변

당신은 할 수 있습니다

puzzle = __import__('8puzzle')

매우 흥미로운 문제입니다. 번호로 이름을 지정하지 않는 것을 기억할 것입니다.

원하는 경우이 질문과 답변을 확인import * 해야합니다 .


답변

위의 답변은 정확하지만 지금은 import_module기능 을 사용하는 것이 좋습니다 .

importlib.import_module(name, package=None)
모듈을 가져옵니다. name 인수는 절대 또는 상대 용어 (예 : pkg.mod또는 ..mod) 로 가져올 모듈을 지정합니다 . 이름이 상대적인 용어로 지정되면 패키지 인수는 패키지 이름을 확인하기위한 앵커 역할을 할 패키지의 이름으로 설정되어야합니다 (예 : import_module('..mod', 'pkg.subpkg')import pkg.mod).

import_module () 함수는
importlib.__import__(). 이것은 함수의 모든 의미가 importlib.__import__(). 이 두 함수의 가장 중요한 차이점 import_module()은 지정된 패키지 또는 모듈 (예 🙂 pkg.mod__import__()반환하는 반면 최상위 패키지 또는 모듈 (예 🙂 을 반환한다는 것 pkg입니다.

인터프리터가 실행을 시작한 이후로 생성 된 모듈을 동적으로 가져 오는 경우 (예 : Python 소스 파일 생성) invalidate_caches()가져 오기 시스템에서 새 모듈을 인식 하도록 호출해야 할 수 있습니다.

__import__ 지금은 권장하지 않습니다.

importlib.__import__(name, globals=None, locals=None, fromlist=(), level=0)
내장 __import__()함수 의 구현입니다 .

참고 모듈의 프로그래밍 방식 가져 오기 import_module()는이 함수 대신 사용해야 합니다.


답변

사용하지 마십시오 .py가져 오기에 확장자를 .

합니까의 from 8puzzle import *작업?

그만한 가치 from x import *가있는 것은 해당 모듈의 네임 스페이스를 현재 컨텍스트로 블리드하기 때문에 선호되는 Python 패턴이 아닙니다.

일반적으로 해당 모듈에서 특별히 원하는 것을 가져 오십시오. 다른 모듈의 모든 글로벌을 가져올 수 있습니다.

예를 들어, 만약 당신이 8puzzle.foo`from 8puzzle import

편집하다:

.py메시지는 정확 하지만 충분하지 않습니다.

다른 포스터의 __import__('8puzzle')제안이 맞습니다. 하나, 패턴을 피하는 것이 좋습니다 .

하나는 내부 비공개 Python 메서드로 예약되어 있습니다. 기본적으로 모듈을 가져올 수 있다는 것이 의미하는 기본 가정을 깨고 있습니다. 파일 이름을, 같은 다른 이름으로 변경 puzzle8하면 문제가 해결됩니다.

이것은 수입품이 무엇인지 알고 있고 코드가 PEP8을 준수하기를 기대하는 경험 많은 Python 프로그래머를 좌절시킬 것 입니다.


답변