기본적으로라는 파일이 있으며 파일 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')
importpkg.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 프로그래머를 좌절시킬 것 입니다.