About Python – “함수 – function”
About Python – “함수 – function”
프로그래밍에서의 함수
함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미합니다.
함수는 대부분의 프로그래밍 언어에서 지원하는 기능입니다. 하나의 큰 프로그램을 여러 부분으로 나누어 줌으로서 그것의 일부분을 수정하기 쉽다는 장점을 가집니다. 파이썬에서도 함수가 존재하는데, 파이썬에서는 함수를 어떻게 사용하는 것일까요?
파이썬의 함수(function
)
def 함수명(파라미터):
수행하고자 하는 코드
수행하고자 하는 코드
파이썬에서 함수는 위와 같이 사용합니다.
파이썬의 함수 – 매개변수를 지정해서 함수 호출하기
def ave(score1, score2, score3):
return (score1+score2+score3)/3
result = ave(score1=20, score2=40, score3=60)
print(result)
흥미로웠던 것은, 함수를 호출할 때에 매개변수를 직접 지정하여 호출할 수도 있다는 것이었습니다. Swift의 함수 사용법과 굉장히 유사한 것 같습니다.
파이썬의 함수 – 가변 매개변수(매개변수 값이 여러 개가 들어가야 하는 경우)
def mult(*a):
print(type(a))
mult(1,5,6,8)
# <class 'tuple'>
함수를 정의하는 부분에 ‘*
‘ 를 붙이면 함수의 매개변수를 여러 개로 입력받을 수 있습니다. 위의 예제에서 확인할 수 있듯이, 매개변수 앞에 ‘*
‘ 를 붙이면 파이썬은 그것을 튜플로 만들어 줍니다.
def mult(*args):
result = 1
for i in args:
result = result * i
return result
x = mult(3,4,5)
print(x)
튜플은 이터러블 객체이므로 for문을 이용해서 반복할 수 있습니다.
파이썬의 함수 – return
문
def add_sqre_mul(a,b):
return a+b, a*a, a*b, a-b
x = add_sqre_mul(4,6)
print(x)
print(type(x))
# (10, 16, 24, -2)
# <class 'tuple'>
return
문에 a+b
, a*a
, b*b
, a-b
를 반환하도록 하였습니다.
실제로 x
에 함수의 return
값을 바인딩하고 그것을 출력해 보면, 튜플의 형태로 출력되는 것을 볼 수 있습니다. 결괏값이 2개가 되는 것이 아니라, 한 개로 출력되는 것입니다.
def some_function(a):
return (a*2)
print("이것은 some_function()입니다. ")
some_function(4)
위의 코드를 살펴봅니다. some_function
이라는 함수는 매개변수의 값을 2배 해서 돌려주고, "이것은 some_function()입니다."
를 출력하도록 되어 있습니다. 하지만 함수를 호출하면 아무 값도 출력되지 않습니다.
그 이유는 return
을 만나는 순간 그 결괏값을 돌려주고 함수를 바로 빠져나가 버리기 때문입니다.
파이썬의 함수 – 파라미터 기본값 설정
def my_score(a = 100):
print("나의 시험 점수는, %a점!" % a)
my_score()
# 나의 시험 점수는, 100점!
my_score()
이라는 함수에는 a
라는 매개변수가 있어야 합니다. 하지만 아래의 함수 호출 부분을 보면 인자를 써넣어 두지 않았습니다.
그러나 프로그램은 오류를 내지 않고 잘 작동합니다. 그 이유는 바로 위에서 매개변수 a
에 100
이라는 기본값을 미리 설정해 두었기 때문입니다.
def my_score_ave(math = 100, kor = 100):
ave = (math+kor)/2
print("시험 평균 점수는 %s" % ave)
my_score_ave()
# 시험 평균 점수는 100.0
def my_score_ave2(math = 100, kor):
ave = (math+kor)/2
print("시험 평균 점수는 %s" % ave)
my_score_ave2(20)
#SyntaxError: non-default argument follows default argument
초기화하고자 하는 매개변수는 항상 뒤쪽에 두어져야 합니다.
파이썬의 lambda
식
람다 함수(람다식) 는 프로그래밍에서 익명 함수를 지칭하는 용어입니다.
def my_score_ave(math = 100, kor = 100):
ave = (math+kor)/2
print("시험 평균 점수는 %s" % ave)
my_score_ave()
# 시험 평균 점수는 100.0
# 위의 식을 람다식으로!
# lambda 매개변수, 매개변수, : 표현식
lambda_example = lambda sci = 50, soc = 50: print("과탐, 사탐의 평균 점수는" , (sci+soc)/2)
lambda_result = lambda_example() # lambda_result 에 lambda_example을 바인딩하며 호출
my_score_ave
를 lambda
식으로 표현한 예제입니다. 람다 함수를 lambda_result
에 바인딩해줌으로서 호출된 것을 볼 수 있습니다.