Python의 함수 오버로딩

Lakshay Kapoor 2023년1월30일
  1. 과부하 정의
  2. Python의 함수 오버로딩
  3. Multiple Dispatch Decorator를 사용하여 Python에서 함수 오버로딩 수행
Python의 함수 오버로딩

이 기사에서는 Python 함수 오버로딩과이를 수행하는 방법에 대해 설명합니다. 아래에 따라야 할 방법과 샘플 프로그램이 포함되어 있습니다.

과부하 정의

프로그래밍에서오버로딩이라는 용어는 함수가 저장된 인수와 매개 변수에 따라 다양한 방식으로 작동하도록 도와줍니다. 오버로딩은 프로그램을 반복적으로 재사용 할 수 있도록합니다. 예를 들어, 서로 너무 다르지 않은 여러 메서드를 전달하는 대신 하나의 메서드 만 전달할 수 있고 오버로드 할 수 있습니다. 함수를 오버로딩하면 프로그램이 더 명확하고 덜 복잡해집니다.

이 프로세스는 여러 오버로드 된 함수를 관리하는 동안 혼란을 야기하므로 과도하게 사용하지 마십시오.

Python의 함수 오버로딩

Python에서는 많은 인수 또는 매개 변수를 전달하여 함수를 여러 번 만들고 호출 할 수 있습니다. 다른 인수 또는 매개 변수를 사용하여 동일한 함수를 반복해서 호출하는이 프로세스를 함수 오버로딩이라고합니다.

class Home:
    def Knock(self, person_one=None, person_two=None):
        if person_one is not None and person_two is None:
            print("Hi, " + person_one)
        elif person_one is not None and person_two is not None:
            print("Hi, " + person_one + " and " + person_two)
        else:
            print("Who's there? ")


DefObj = Home()

DefObj.Knock()
DefObj.Knock("Rick", "Morty")
DefObj.Knock("Sam")

이 프로그램에서 우리는 처음에Home이라는 클래스를 정의하고 여기서Knock함수를 정의합니다. 그 후if-else조건문은 다른 입력에 따라 다른 조건을 제공합니다. 그런 다음 메인 클래스HomeKnock함수를 호출하는 데 사용하는DefObj라는 객체를 만듭니다. 마지막으로 다른 인수를 사용하여Knock함수를 두 번 이상 호출했습니다. 따라서이 프로그램에서는 함수 오버로딩을 사용했습니다.

Multiple Dispatch Decorator를 사용하여 Python에서 함수 오버로딩 수행

Python의Decorators는 프로그램에서 특정 클래스 또는 함수의 동작을 수정하는 데 도움이되는 도구입니다. 실제로 변경하지 않고 기존 기능을 수정하기 위해 다른 기능을 추가하는 데 사용됩니다.

Dispatch Decorator는 주어진 유형 목록을 기반으로 동일한 추상 함수의 여러 실행에서 구현을 선택하는 데 도움이됩니다.

아래의 예제 프로그램을 살펴보십시오.

from multipledispatch import dispatch


@dispatch(float, float, float)
def summation(float_1, float_2, float_3):
    total = float_1 + float_2 + float_3
    print(total)


@dispatch(int, int, int)
def difference(int_1, int_2, int_3):
    diff = int_1 - int_2 - int_3
    print(diff)


@dispatch(int, int, int)
def multiply(int_1, int_2, int_3):
    product = int_1 * int_2 * int_3
    print(product)


summation(6.9, 3.14, 7.12)
difference(9, 6, 3)
product(3, 3, 3)

출력:

17.16
0
27

여기에서 모든 데이터 유형을 디스패처에 전달할 수 있습니다. 디스패처는 구현이 다른 객체를 만드는 데 사용됩니다. 실행하는 동안 함수 이름, 인수 개수 및 인수의 데이터 유형을 사용하여 적절한 함수를 선택합니다.

Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

관련 문장 - Python Function