함수
파이썬 함수는 def
키워드롤 통해 선언한다.
def 함수이름(매개변수):
<수행할 문장>
..
return 결과값
일반적인 함수는 아래와 같이 입력값과 결과값을 가지고 있다.
def add(a,b):
return a + b
a = add(3,4)
print(a)
7
입력값이 없는 함수는 다음과 같다.
def say():
return 'Hi'
a = say()
print(a)
Hi
결과값이 없는 함수는 다음과 같다.
def add(a,b):
print("%d, %d의 합은 %d입니다." % (a,b,a+b))
add(3,5)
3, 5의 합은 8입니다.
return 값이 없기 때문에 a 출력 시, None이 출력된다.
a = add(3,5)
3, 5의 합은 8입니다.
print(a)
None
함수 호출 시에 매개변수에 값을 지정할 수 있다.
def add(a,b):
return a + b
result = add(a=3, b=5)
print(result)
8
이처럼 매개변수에 값을 지정하면 순서에 상관없이 사용할 수 있다.(a = 4, b = 5 전달)
result = add(b=5, a=4)
print(result)
9
입력값을 모르는 경우는 다음과 같이 *매개변수
로 사용한다.
def 함수이름(*매개변수):
<수행할 문장>
...
아래와 같이 *args
로 매개변수 선언시, 입력값 갯수에 제한이 없다.
def add_many(*args):
result = 0
for i in args:
result += i
return result
a = add_many(1,2)
print(a)
a = add_many(1,2,3)
print(a)
a = add_many(1,2,3,4)
print(a)
3
6
10
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
a = add_mul('add', 1,2,3,4,5)
print(a)
a = add_mul("mul", 1,2,3,4,5)
print(a)
15
120
키워드 파라미터
키워드 파라미터를 사용하기 위해서는 매개변수에 **
를 붙여 사용한다.
매개변수는 딕셔너리가 되고 모든 key=value 형태의 결괏값이 그 딕셔너리에 저장되어 딕셔너리 형태로 출력된다.
def print_keyward(**kwargs):
print(kwargs)
print_keyward(a=1)
print_keyward(name='food', age=3)
{'a': 1}
{'name': 'food', 'age': 3}
함수의 결과값은 언제나 1개이다. 아래의 경우 a + b, a * b 의 결과가 튜플로 반환되며, 각각의 변수에 담을 수 있다.
def add_and_mul(a,b):
return a + b, a * b
result = add_and_mul(3,4)
print(result)
result1, result2 = add_and_mul(3,4)
print(result1)
print(result2)
(7, 12)
7
12
매개변수를 미리 초기화하여 사용할 수 있다.
def say_myself(name, old, man=True):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살 입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself("양상길", 29)
say_myself("양상길", 29, True)
say_myself("여자", 29, False)
나의 이름은 양상길 입니다.
나이는 29살 입니다.
남자입니다.
나의 이름은 양상길 입니다.
나이는 29살 입니다.
남자입니다.
나의 이름은 여자 입니다.
나이는 29살 입니다.
여자입니다.
함수 호출 시 초기화된 man 매개변수에 인수를 입력하지 않으면 초기화 값을 갖게 된다.
또한, 초기값을 설정해 놓은 매개변수 뒤에 초기값을 설정해 놓지 않은 매개변수는 사용할 수 없다. 즉 항상 초기화시키고 싶은 변수를 맨 뒷쪽에 두어야 한다.
def say_myself(name, man=True, old):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살 입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself("양상길", 29)
SyntaxError: non-default argument follows default argument
def say_myself(name, old=23, man=True):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살 입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself("양상길")
나의 이름은 양상길 입니다.
나이는 1살 입니다.
남자입니다.
반응형
'Python' 카테고리의 다른 글
[Python] map() 함수 (139) | 2024.01.19 |
---|---|
[Python] 입출력 함수 (124) | 2024.01.18 |
[Python] range() 함수 (120) | 2024.01.16 |
[Python] 반복문 (81) | 2024.01.15 |
[Python] 조건문 (55) | 2024.01.12 |
댓글