입력값을 가지고 어떤 일을 수행한 다음 그 결과물을 내어 놓는 것
1) 함수의 구조
def 함수명 ( ):
__수행할 문장
__수행할 문장
2) 일반적인 함수
def 함수명(매개변수): 수행할 문장 수행할 문장 return 결괏값
def add(a, b): return a+b print(add(3, 4)
3) 입력 값이 없는 함수
def say(): return 'Hi'
4) 결괏값이 없는 함수
def add(a, b): print("{}와 {}의 합은 {}입니다.".format(a, b, a+b))
5) 입력값도 결괏값도 없는 함수
def say(): print('Hi')
6) 매개변수 지정하여 호출하기
def add(a, b): return a+b
result = add(a=3, b=7) print(result)
실행결과> 10
result = (b=7, a=3) # b=7 이 먼저 입력됐지만 a에 3이, b에 7이 입력된다. print(result)
실행결과> 10
7) 입력값이 몇 개인지 모르는 여러 개의 입력값을 받는 함수
def 함수명(*매개변수): 수행할 문장
def add_many(*args): result = 0 for i in args: result += i return result
result = add_many(1, 2, 3) print(result) 실행결과> 6
result = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) print(result) 실행결과> 55
8) 1개의 입력값과 여러 개의 입력값(*args)을 받는 함수
def add_mul(choice, *args): if choice == "add": result = 0 for i in args: result += i elif choice == "mul": result = 1 for i in args: result *= i return result
result = add_mul('add', 1, 2, 3, 4, 5) print(result) 실행결과> 15
result = add_mul('mul', 1, 2, 3, 4, 5) print(result) 실행결과> 120
8-1) 키워드 파라미터 (kwargs)
def print_kwargs(**kwargs): print(kwargs)
print_kwargs(a=1) 실행결과> {a: 1}
print_kwargs('name'='foo', 'age'=3) 실행결과> {'name': 'foo', 'age': 3}
9) return 으로 함수 빠져 나가기
def say_nick(nick): if nick == '바보': return print("별명은 {}입니다.".format(nick))
10) 매개변수에 초깃값을 설정해둔 함수
def say_myself(name, old, man=True): print("내 이름은 {}입니다.".format(name)) print("나이는 {}살입니다.".format(old)) if man: print("남자입니다.") else: print("여자입니다.")
say_myself('토니스타크', 53) # man 변수에 입력값을 주지않음 say_myself('토니스타크', 53, True)
실행결과> 내 이름은 토니스타크입니다. 나이는 53입니다. 남자입니다.
def say_myself(name, man=True, old): print("내 이름은 {}입니다.".format(name)) print("나이는 {}살입니다.".format(old)) if man: print("남자입니다.") else: print("여자입니다.")
say_myself('토니스타크', 53)
실행결과> SyntaxError: non-default argument follows default argument