패키지 내의 모든 모듈을 루트 수준의 기본 응용 프로그램에서 가져 와서 Python 3에서 즉시 사용할 수있는 모듈 내의 함수를 사용할 수 있습니까?패키지 모듈의 함수를 Python3의 루트 응용 프로그램에서 즉시 사용할 수있게하려면 어떻게합니까?
+app
|- __init__.py
|- main.py
|+ package
|- __init__.py
|- module.py #(contains function1, function2 and function 3)
내가 main.py 내에서 다음 import 문 (은 복잡한 애플리케이션을위한 길고 실수 얻을 수 있습니다)을 피하기 위해 같은 것입니다 :
from package.module import function1, function2, function3
이것은 좋은 여기 예제 파일 트리입니다 , 그 때 그것은를 main.py에서 호출하게한다. package.module에서 함수를 가져 오는 것만으로는 함수의 전체 디렉토리를 호출하여 스크립트 내에서 사용하거나 새로운 함수 내에서 별칭을 지정해야합니다. 예를 들어 :
from package import * #it is said this is bad form as well
module.function(param)
#I just want the function and don't want to call module also
내 목표는 패키지와 모듈을 가져 오는 것입니다 다음 전체가 : 나는 의미 내 패키지의 __init__.py
에 __all__ = ["module1", "module2"]
를 포함하면 내가 가진
import package.module
package.module.function(param)#not fun...too long!
#or like this
def newFunction(param):
'''why create a new function to handle an already existing one?
Bad form and non Pythonic'''
return package.module.function(param)
이 (가) 다음을 수행합니다 함수를 사용하려고 할 때마다 패키지와 모듈을 명시 적으로 호출 할 필요없이 모듈 내의 모든 함수를 사용할 수 있습니다. 나는 documentation for Python 3 about modules and packages을 읽고
import package.module
function1(x)
:의 라인을 따라 뭔가를 생각. 생각/도움을 주시면 감사하겠습니다.
이것은 실제로 Logic @ MikeMüller입니다. 그러나 모듈과 패키지에서 많은 함수를 가져 오는 경우 가져 오기 명령문이 기하 급수적으로 커질 수 있습니다. 필자는 한번도 시도한 적이 없지만 모든 함수 가져 오기를 처리하기 위해 가져 오기 스크립트를 작성한 다음 주 응용 프로그램에서 간단하게 호출 할 수 있다고 가정합니다. 50 개 이상의 가져 오기가있을 수있는 곳에서는 매우 큰 응용 프로그램을 어떻게 처리합니까? – Fergus
필요한 것을 가져와야합니다. '*'나 my 메소드를 사용하든, 여전히 같은 양의 import 문이 필요합니다. –
다시 한번 감사드립니다. @ MikeMüller. 어떻게하면 내 모든 가져 오기가 들어있는 파일을 만든 다음'__main __. py' 응용 프로그램에서 간단히 불러올 수 있습니까? 그것은 메인 애플 리케이션 내에서 가져 오기 프로세스를 청소 것 같아. – Fergus