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
조건문은 다른 입력에 따라 다른 조건을 제공합니다. 그런 다음 메인 클래스Home
이Knock
함수를 호출하는 데 사용하는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 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