파이썬에서 함수를 정의하는 키워드는 def입니다. 예를 들어 my_function이라는 함수를 정의하려면 이렇게 정의하면 됩니다. 여기서 괄호 안의 x와 y는 전달된 매개변수입니다.
def my_function(): # function body
반환값
함수는 return 키워드를 사용하여 데이터를 반환할 수 있습니다. 반환될 때까지 함수가 실행되면 반환되고 더 이상 함수를 실행하지 않습니다. return 문이 없는 함수는 기본적으로 None을 반환합니다.
return 없음은 return으로 축약될 수 없습니다.
빈 함수
아무 일도 하지 않는 함수를 정의하려면 pass 문을 사용하면 됩니다.
예를 들어
def do_nothing() pass
pass는 자리 표시자 역할을 합니다. 이 함수의 특정 내용을 정의할 필요가 없으면 pass를 사용할 수 있습니다.
매개변수 확인
이전 기사에서는 내장된 함수가 전달된 매개변수의 개수와 데이터 유형을 확인한다고 소개했습니다. 그렇다면 Python은 사용자 정의 함수를 어떻게 처리합니까?
함수를 정의합니다
def my_function(x,y): return x*y
호출: my_function(1,2,3)
오류:
Traceback (most recent call last): File "/Users/W/Code/Python/LearnPython/DataType.py", line 4, in <module> my_function(1,2,3) TypeError: my_function() takes exactly 2 arguments (3 given)
호출: my_function(1," abc")
오류 보고: 오류 메시지가 반환되지 않습니다. 실제로 my_function에 의해 전달된 두 매개변수는 정수와 부동 소수점 숫자여야 합니다.
함수에 매개변수 검사 추가
my_function을 일부 변경합니다.
def my_function(x, y): if not (isinstance((x,y),(int,float)) and isinstance(y,(int,float))): raise TypeError('Bad operand type') return x*y
이때, my_function 함수를 호출하고 잘못된 매개변수를 전달하면 TypeError가 발생합니다.
여러 값을 반환하는 함수
Python은 여러 값 반환을 지원합니다. Python은 실제로 튜플을 반환하여 이를 구현합니다. 간단한 데모를 통해 이를 확인할 수 있습니다.
def func(): return 2, 3 print func()
는 (2,3)과 같은 튜플을 출력합니다.
구문적으로는 튜플을 반환할 때 괄호를 생략할 수 있습니다. 즉, 여러 변수가 동시에 튜플을 받아 위치에 따라 해당 값을 할당할 수 있습니다. 예를 들어
x,y = func().