파이썬에서 다른 파일에서 함수 호출
Set_up : 프로그램에서 사용해야하는 각 함수마다 .py 파일이 있습니다.
이 프로그램에서는 외부 파일에서 함수를 호출해야합니다.
난 노력 했어:
from file.py import function(a,b)
하지만 오류가 발생합니다.
ImportError : 'file.py'라는 모듈이 없습니다. 파일이 패키지가 아닙니다
이 문제를 어떻게 해결합니까?
file.py
가져 오는 동안 추가 할 필요가 없습니다 . 그냥 쓰고 from file import function
나서를 사용하여 함수를 호출하십시오 function(a, b)
. 이것이 작동하지 않는 이유 file
는 파이썬의 핵심 모듈 중 하나 이기 때문에 파일 이름을 변경하는 것이 좋습니다.
당신이 가져 오기 기능하려고하는 경우주의 a.py
라는 파일에 b.py
, 당신이 있는지 확인해야합니다 a.py
와 b.py
같은 디렉토리에 있습니다.
우선 당신은 필요하지 않습니다 .py
.
파일이 a.py
있고 내부에 몇 가지 기능이 있습니다.
def b():
# Something
return 1
def c():
# Something
return 2
그리고 당신은 그들을 가져올 z.py
당신이 작성해야
from a import b, c
두 가지 방법으로이 작업을 수행 할 수 있습니다. 먼저 file.py에서 원하는 특정 함수를 가져 오는 것입니다. 이 사용하려면
from file import function
다른 방법은 전체 파일을 가져 오는 것입니다
import file as fl
그런 다음 file.py 내의 모든 함수를 사용하여 호출 할 수 있습니다
fl.function(a,b)
작업중인 동일한 디렉토리에서 함수를 사용할 수 없거나 원하지 않는 경우 다른 디렉토리에서도 함수를 호출 할 수 있습니다. 두 가지 방법 으로이 작업을 수행 할 수 있습니다 (아마도 더 많은 대안이 있지만 이것이 나를 위해 일한 대안입니다).
대안 1 작업 디렉토리를 임시로 변경
import os
os.chdir("**Put here the directory where you have the file with your function**")
from file import function
os.chdir("**Put here the directory where you were working**")
대안 2 기능이있는 디렉토리를 sys.path에 추가하십시오.
import sys
sys.path.append("**Put here the directory where you have the file with your function**")
from file import function
동일한 기능을 사용했지만 작동하려면 아래를 수행해야했습니다.
'ModuleNotFoundError : No module named'가 표시되면 아래와 같이 파일 이름 앞에 dot (.)이 필요할 것입니다.
에서 .file 수입 연료 소모량
먼저 파일을 .py 형식으로 저장하십시오 (예 :) my_example.py
. 그 파일에 기능이 있다면
def xyz():
--------
--------
def abc():
--------
--------
호출 함수에서 아래 줄을 입력하면됩니다.
file_name : my_example2.py
=============================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
=============================
파일이 다른 패키지 구조에 있고 다른 패키지에서 파일을 호출하려는 경우 다음과 같은 방식으로 파일을 호출 할 수 있습니다.
파이썬 프로젝트에 다음과 같은 패키지 구조가 있다고 가정 해 봅시다.
- com.my.func.DifferentFunction
파이썬 파일에는 다음과 같은 기능이 있습니다.
def add(arg1, arg2):
return arg1 + arg2
def sub(arg1, arg2) :
return arg1 - arg2
def mul(arg1, arg2) :
return arg1 * arg2
그리고에서 다른 함수를 호출 Example3.py
하고 다음과 같이 할 수 있습니다.
Example3.py
모든 기능을 가져 오기 위해 파일에 import 문 정의
from com.my.func.DifferentFunction import *
또는 가져올 각 함수 이름을 정의하십시오.
from com.my.func.DifferentFunction import add, sub, mul
그런 다음 Example3.py
함수를 호출하여 실행할 수 있습니다.
num1 = 20
num2 = 10
print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
산출:
add : 30
sub : 10
mul : 200
모듈을 'file'이외의 다른 이름으로 바꾸십시오.
그런 다음 함수를 호출 할 때 다음을 확인하십시오.
1) 전체 모듈을 가져 오는 경우 호출 할 때 모듈 이름을 반복하십시오.
import module
module.function_name()
또는
import pizza
pizza.pizza_function()
2) 또는 특정 함수, 별명을 가진 함수 또는 *를 사용하는 모든 함수를 가져 오는 경우 모듈 이름을 반복하지 마십시오.
from pizza import pizza_function
pizza_function()
또는
from pizza import pizza_function as pf
pf()
또는
from pizza import *
pizza_function()
를 추가 할 필요가 없습니다 file.py
.
파일을 가져 오려는 파일과 동일한 위치에 파일을 보관하십시오. 그런 다음 함수를 가져 오십시오.
from file import a, b
내부 MathMethod.Py.
def Add(a,b):
return a+b
def subtract(a,b):
return a-b
내부 Main.Py
import MathMethod as MM
print(MM.Add(200,1000))
출력 : 1200
가져 오려는 Python 파일과 동일한 위치에 파일이 있어야합니다. 또한 '파일 가져 오기 기능에서'도 충분합니다.
호출하려는 파일이 anotherfile.py이고 호출하려는 메소드가 method1이라고 가정 한 다음, 먼저 파일을 가져온 다음 메소드를 가져 오십시오.
from anotherfile import method1
method1이 클래스의 일부이면 클래스를 class1로 둡니다.
from anotherfile import class1
그런 다음 class1의 객체를 만들고 객체 이름이 ob1이라고 가정 한 다음
ob1 = class1()
ob1.method1()
내 경우에는 파일 이름을 지정하고로 helper.scrap.py
변경할 때까지 파일 을 작동시킬 수 없었습니다.helper.py
코드를 실행하는 동일한 디렉토리에있는이 파일을 가져 오려면 파일 이름 앞에 점 (.)을 추가하십시오.
예를 들어, 나는 a.py라는 파일을 실행 중이며 b.py로 작성된 addFun이라는 메소드를 가져오고 싶습니다 .b.py는 동일한 디렉토리에 있습니다.
.b import addFun에서
참고 URL : https://stackoverflow.com/questions/20309456/call-a-function-from-another-file-in-python
'Programming' 카테고리의 다른 글
JDK 코드를 실행할 때 Java JIT가 부정 행위를합니까? (0) | 2020.02.22 |
---|---|
GitHub 플레이 버드 마크 다운을 렌더링하기위한 명령 줄 유틸리티가 있습니까? (0) | 2020.02.22 |
Swift 클래스의 정적 및 클래스 함수 / 변수? (0) | 2020.02.22 |
Mockito가 여러 번 호출되는 메소드의 인수를 캡처 할 수 있습니까? (0) | 2020.02.22 |
Go에서 두 조각을 연결 (0) | 2020.02.22 |