함수는 코드 블럭을 다시 재사용할수 있게 만들어서, 프로그래머들의 시간을 낭비하지 않게 해줍니다
파이썬에서 함수의 개념은 다른 언어들과 동일합니다.
파이썬에는 미리 정의가 되어 있는, built in 함수, 즉 내장되어 있는 함수가 존재하고. 혹은, 사용자가 필요에 의해 정의를 한 사용자 정의 함수가 존재할수 있습니다.
파이썬에서 함수 정의
def로 시작하고, def 다음에 함수이름을 적어주면 선언됩니다
함수는 def <함수명> () : 형태로, 괄호안에 input 으로 쓰여질 인자들을 정의할수 있고, : 으로 끝납니다
함수명에 인자를 정의해 주면, 다음줄부터 코드 문장을 쓸수 있고, 이 코드 문장들은 들여쓰기가 되어 있어야 합니다.
간단한 함수를 예로 들어보면, 아래와 같습니다.
1 2 3 4 5 6 7 8 9
# 사용자 정의 함수 # average_number 는 함수명 # x, y 는 함수에 input 으로 쓰여질 인자들
defaverage_number(x, y): print("x 와 y 의 평균은 {} 입니다".format((x + y) / 2)) # 정의된 함수를 호출 x 값엔 4를, y 값에는 6을 넣어줍니다 average_number(4, 6)
함수를 호출하는 방법
다른 프로그래밍 언어들과 비슷하게, 함수를 호출하는 방법은, 함수명을 쓰고 () 안에 파라미터를 넣어주어 호출합니다. 위의 예시에서 average_number(4 ,6) 은 average_number 라는 함수를 호출하고, 파라미터로, 4, 6 을 넣어줍니다
함수 호출 예시
1 2 3 4 5 6 7 8 9 10 11
# 함수 호출 예시
defprint_three_times(): print("이것은 파이썬 기초 입니다") print("이것은 파이썬 기초 입니다") print("이것은 파이썬 기초 입니다") # 위의 정의된 함수를 호출 # 함수는 인자를 가지지 않고, print 문을 3번 실행 합니다
print_three_times()
함수에서 return 문
파이썬에서 return 문은 함수로부터 값을 반환하기 위해 사용됩니다. 수식과 인자가 없이 실행된 함수에 return 문은 None 을 반환합니다.
예를들면,
1 2 3 4 5 6
defnsquare(x, y): return (x * x + 2*x*y + y*y)
# return 뒤의 수식 의 값을 함수의 값으로 반환합니다
print("2와 3의 합계의 제곱은 : {}".format(nsquare(2, 3)))
기본 인자 값
함수의 파라미터 리스트에서 우리는, 하나 혹은 그 이상의 인자들에 대해 기본값을 지정할수 있습니다.
기본값은, 인자1 = 값 의 형태로 작성될수 있습니다.
우리는 어떤 인자가 기본값을 가지게 될지에 대해서 선택하여 지정할수 있습니다.
예를들면,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# y 는 2라는 값을 기본값으로 지정됩니다 defnsquare(x, y = 2): return (x*x + 2*x*y + y*y)
# y값에 대한 파라미터가 전달되지 않는다 하더라도 # y 는 기본값인 2를 가지고 함수를 실행하고 # 그에 맞는 값을 반환합니다
print("2와 3의 합계의 제곱은 : {}".format(nsquare(2)))
# y 값에 대한 파라미터가 4로 전달이 되면, # y 는 전달된 4라는 값을 가지고 함수를 실행하고 # 값을 반환합니다
print("2 와 4의 합계의 제곱은 : {}".format(nsquare(2,4)))
키워드 인자
우리는 어떻게 기본 인자값들을 지정하는지 배웠습니다만.
함수는 키워드 인자들을 사용하여 호출될수도 있습니다.
키워드 인자란?
변수명 = 값 형태로 되어 있는 인자들을, 키워드 인자라고 부릅니다.
함수에 전달된 모든 키워드 인자들은, 함수가 받는 인자들중 하나와 꼭 매치가 되어야 합니다.
아래 예시에서, 함수가 호출될때마다, 함수로 전달되는 인자들중 꼭 한가지는 함수가 받는 인자들중 하나와 매치가 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 키워드 인자
defmarks(english, math=85, science=80): print("Marks in : English is - ", english, "Math -", math, "Science -", science) # english parameter 는 71의 값을 갖고, math 는 77 그리고 science 는 기본값인 80을 갖습니다 marks(71, 77)
# english parameter 는 65 의 값을 갖고, math 는 기본값인 85, 그리고 science 는 74로 전달 됩니다 marks(65, science=74)
# 순서가 바뀌긴 했지만, 상관없이 정확히 매칭만 된다면, # english 는 75의 값을, math 는 90의 값을, science 는 70의 값을 갖게 됩니다 marks(science=70, math=90, english=75)
Arbitrary Argument Lists
arbitrary argument, 즉 임의의 인자 리스트는, 인자들을 함수에 전달하는 다른 방법중 하나 입니다.
함수의 body 안에서, 이 인자들은 튜플로 감싸져 있고. 이는 *args 생성자를 사용하여 정의 됩니다.