def 함수이름():
(들여쓰기) 코드
함수()
def 함수이름(매개변수1, 매개변수2):
코드
예시) 함수만들기
>>> def add(a, b):
... print(a + b)
...
호출
>>> add(10, 20)
30
괄호 안에 변수를 매개변수(parameter)
입력하는 값을 인수(argument)
def 함수이름(매개변수):
return 반환값 , 반환값2
(return에 값을 지정하지 않으면 None을 반환
return으로 반환하는 값은 반환값이라고 하며 함수를 호출해준 바깥에 결과를 알려주기 위해 사용
변수에 함수 저장해서 리턴값을 저장할 수 있음.
표준 입력으로 숫자 두 개가 입력됩니다. 다음 소스 코드를 완성하여 두 숫자의 덧셈, 뺄셈, 곱셈, 나눗셈의 결과가 출력되게 만드세요. 이때 나눗셈의 결과는 실수라야 합니다.
x, y = map(int, input().split())
def calc(a,b):
return a+b, a-b, a*b, a/b
a, s, m, d = calc(x, y)
print('덧셈: {0}, 뺄셈: {1}, 곱셈: {2}, 나눗셈: {3}'.format(a, s, m, d))
함수에서 위치 인수, 키워드 인수를 사용하는 방법과 리스트, 딕셔너리 언패킹(unpacking)을 활용하는 방법
함수에 인수를 순서대로 넣는 방식. 인수의 위치가 정해져 있음
함수(리스트)
함수(튜플)>> x = [10, 20, 30] >> print_numbers(*x) 10 20 30
리스트(튜플) 앞에 *를 붙이면 언패킹(unpacking)이 되어서 print_numbers(10, 20, 30)과 똑같은 동작
인수의 개수가 정해지지 않은
def 함수이름(*매개변수):
코드
예)
>>> def print_numbers(*args):
... for arg in args:
... print(arg)
...
>>> print_numbers(10)
10
>>> print_numbers(10, 20, 30, 40)
10
20
30
40
>>> x = [10]
>>> print_numbers(*x)
10
>>> y = [10, 20, 30, 40]
>>> print_numbers(*y)
10
20
30
40
인수의 순서와 용도를 매번 기억하지 않도록 키워드 인수(keyword argument)
함수(키워드=값)
>> def personal_info(name, age, address): ... print('이름: ', name) ... print('나이: ', age) ... print('주소: ', address)
>> personal_info(name='홍길동', age=30, address='서울시 용산구 이촌동') 이름: 홍길동 나이: 30 주소: 서울시 용산구 이촌동
함수(**딕셔너리)
별표 두개 사용 이유: 딕셔너리는 키-값 쌍 형태로 값이 저장되어 있기 때문
예)
>>> def personal_info(name, age, address):
... print('이름: ', name)
... print('나이: ', age)
... print('주소: ', address)
...
딕셔너리에 '키워드': 값 형식으로 인수를 저장하고, 앞에 **를 붙여서 함수에 넣어줍
>>> x = {'name': '홍길동', 'age': 30, 'address': '서울시 용산구 이촌동'}
>>> personal_info(**x)
이름: 홍길동
나이: 30
주소: 서울시 용산구 이촌동
def 함수이름(매개변수=값):
코드
초깃값이 지정된 매개변수는 뒤쪽에 몰아써야 함.
표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 다음 소스 코드를 완성하여 가장 높은 점수, 가장 낮은 점수, 평균 점수가 출력되게 만드세요. 평균 점수는 실수로 출력되어야 합니다.
korean, english, mathematics, science = map(int, input().split())
def get_min_max_score(*scrs):
return min(*scrs), max(*scrs)
def get_average(**kyscrs):
return sum(kyscrs.values())/len(kyscrs)
min_score, max_score = get_min_max_score(korean, english, mathematics, science)
average_score = get_average(korean=korean, english=english,
mathematics=mathematics, science=science)
print('낮은 점수: {0:.2f}, 높은 점수: {1:.2f}, 평균 점수: {2:.2f}'
.format(min_score, max_score, average_score))
min_score, max_score = get_min_max_score(english, science)
average_score = get_average(english=english, science=science)
print('낮은 점수: {0:.2f}, 높은 점수: {1:.2f}, 평균 점수: {2:.2f}'
.format(min_score, max_score, average_score))
get_average 함수는 인수를 키워드 인수로 넣고 있으므로 별 두개로
함수의 매개변수와 반환값을 명시적으로 보여주는 기능
주석이라 강제성 없음
파라미터 마다 annotation 써서
리턴값은 -> expression
형태로 써줌.