def 함수명(매개변수):
<수행할 문장1>
<수행할 문장2>
...
def add(a, b): # a, b는 매개변수
return a+b
print(add(1, 2)) # 1, 2는 인수
⇒ 3
함수의 이름 : add
입력값 : 1, 2
결과값 : 3
def say():
return 'Hi'
a=say()
print(a)
⇒ Hi
함수의 이름 : say
입력값 : 없음
결과값 : Hi
위 함수를 쓰기 위해서는 say()
처럼 괄호 안에 아무 값도 넣지 않아야 한다.
그러므로 입력값 없이 함수를 썼고 print문을 이용해 결과값을 도출했다고 볼 수 있다.
def add(a, b):
print("%d, %d의 합은 %d입니다." % (a, b, a+b)) #return 없이 print문 사용
add(3, 4)
⇒ 3, 4의 합은 7입니다.
함수의 이름 : add
입력값 : 3, 4
결과값 : 없음
문장 출력이 되었는데 왜 결과값이 없다는 것이냐!!
print문을 사용하지 않았기 때문이다. 함수 add 내에 있는 print 문은 <수행할 문장>일 뿐이다.
즉, print문을 사용하여 결과값을 도출했다기 보다는 함수 add를 사용하여 출력된 것이 맞다.
결괏값은 오직 return 명령어로만 돌려받을 수 있다.
def add(a, b):
return a+b
result=add(a=1,b=2)
print(result)
⇒ 3
result=add(b=2,a=1)
print(result)
⇒ 3
매개변수를 지정하여 호출하면 위 처럼 순서에 상관없이 사용 가능
def 함수이름(*매개변수):
<수행할 문장>
def add_many(*args):
result = 0
for i in args:
result = result + i
return result
*args
처럼 매개변수 이름 앞에 *
을 붙이면 입력값을 전부 모아서 튜플로 만들어줌
add_many(1, 2, 3)
⇒ args는 (1, 2, 3)
defprint_kwargs(**kwargs):
print(kwargs)
print_kwargs(a=1)
=>{'a': 1}
print_kwargs(name='foo', age=3)
=>{'age': 3, 'name': 'foo'}
입력값 a=1
또는 name='foo', age=3
이 모두 딕셔너리로 출력
즉, **kwargs
처럼 매개변수 이름 앞에 **
을 붙이면 매개변수 kwargs는 딕셔너리가 되고
모든 key=value
형태의 결과값이 그 딕셔너리에 저장된다.
익명 함수 표현식
함수를 간편한 수식으로 표현
def b(x):
return x + 10
print(b(10))
b = lambda x : x + 10
print(b(10))