Programming

파이썬에서 다른 파일에서 함수 호출

procodes 2020. 2. 22. 12:01
반응형

파이썬에서 다른 파일에서 함수 호출


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.pyb.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



반응형