반응형
[ 파이썬 함수 만들기 ]
* 코드는 기본적으로 <입력값 # 출력값> 으로 구성되어 있습니다.
* 아래 [더보기] 클릭 후 [Ctrl + F] 단축키를 활용하여 찾고 계신 함수 위치로 바로 가실 수 있습니다.
더보기
함수 기본형 : def
함수 2개 이상 사용하기
함수 입력값(매개변수) 정의
함수 입력값(매개변수) 응용 : *args
함수 입력값(매개변수) 응용 : **kwargs
함수 기본형 : def
def 함수명(입력값):
실행문
return 출력값
- 위 함수에 입력값(=매개변수)을 전달하면 실행문에서 지정된 작업을 실행한 뒤 원하는 출력값을 반환함
- 위 함수는 함수명(입력값) 을 통해 호출할 수 있음
- 입력값, 실행문, 출력값 각각이 필요하지 않을 경우 생략 가능함
- 출력값이 정의되지 않은 경우 함수명 호출 시 None 값을 반환함
- 단, 함수가 정의되는 범위를 알기 위해 실행문과 출력값 중 하나는 정의되어야 함
- 출력값을 반환하기 위해 사용하는 return 은 반복문에서 break 와 같은 역할 또한 수행하므로 return 뒤의 내용은 실행되지 않음
def test(a, b):
c = a + b
return c
print(test(1, 2)) # 출력값 : 3
def test():
c = 1 + 2
return c
print(test()) # 출력값 : 3
def test(a, b):
return a + b
print(test(1, 2)) # 출력값 : 3
def test(a, b):
c = a + b
print(c)
test(1, 2) # 출력값 : 3
print(test(1, 2)) # 출력값 : 3 / None
def test(a, b):
c = a + b
return c
print(123)
print(test(1, 2)) # 출력값 : 3
함수 2개 이상 사용하기
- 앞서 정의된 함수를 이용하여 새로운 함수를 정의할 수 있음
- 함수 내에 새로운 함수를 정의할 수 있음
def test1(a, b):
c = a + b
return c
def test2(n, m):
k = test1(n, m)
return k
print(test2(1, 2)) # 출력값 : 3
def test2(n, m):
def test1(a, b):
c = a + b
return c
k = test1(n, m)
return k
print(test2(1, 2)) # 출력값 : 3
함수 입력값(매개변수) 정의
def 함수명(매개변수1=값1, 매개변수2=값2, ...):
실행문
return 출력값
- 위 함수와 같이 각 입력값의 초기값을 정의할 수 있으며, 입력값 없이 함수를 호출할 경우 초기값을 이용하여 함수가 실행됨
- 함수명(매개변수2=3)과 같이 매개변수명(ex. 매개변수1, 매개변수2 등)을 직접 호출하여 정의가 가능하며 나머지 값은 초기값으로 정의된 상태로 함수가 실행됨
- 만약 초기값이 지정된 매개변수와 그렇지 않은 매개변수가 함께 쓰인다면 초기값이 지정된 매개변수를 가장 끝에 위치시켜야 함
def test(a=1, b=2):
c = a + b
return c
print(test()) # 출력값 : 3
print(test(b=5)) # 출력값 : 6
def test(a, b, k=3):
c = a + b + k
return c
print(test(a=1, b=2)) # 출력값 : 6
print(test(1, 2)) # 출력값 : 6
def test(a, b=2, k):
c = a + b + k
return c
# 출력값 : SyntaxError: non-default argument follows default argument
함수 입력값(매개변수) 응용 : *args
- *args : def 를 이용하여 함수를 정의할 때 매개변수를 *매개변수명 와 같은 형태로 입력하면 개수가 정해지지 않은 입력값을 매개변수에 tuple 형태로 저장할 수 있음
- 일반적으로 *매개변수명은 *args 으로 사용됨
- 일반 매개변수와 *args를 입력값으로 함께 사용할 수 있으며, 일반적으로 *args를 가장 뒤에 위치시키거나 매개변수를 위치에 맞게 지정하여 정의하는 것이 일반적임
def test(*args):
print('args:', args)
print('type:', type(args))
test(1, 2, 3, 4, 5) # 출력값 : args: (1, 2, 3, 4, 5) / type: <class 'tuple'>
def test(a, *args):
print('a:', a)
print('args:', args)
print('type:', type(args))
test(0, 1, 2, 3, 4, 5) # 출력값 : a: 0 / args: (1, 2, 3, 4, 5) / type: <class 'tuple'>
def test(*args, a):
print('a:', a)
print('args:', args)
print('type:', type(args))
test(0, 1, 2, 3, 4, 5) # 출력값 : TypeError: test() missing 1 required keyword-only argument: 'a'
test(a=0, 1, 2, 3, 4, 5) # SyntaxError: positional argument follows keyword argument
test(0, 1, 2, 3, 4, a=5) # 출력값 : a: 5 / args: (0, 1, 2, 3, 4) / type: <class 'tuple'>
def test(*args=(1,2,3,4,5)):
print('args:', args)
print('type:', type(args))
# 출력값 : SyntaxError: invalid syntax
함수 입력값(매개변수) 응용 : **kwargs
- **kwargs : def 를 이용하여 함수를 정의할 때 매개변수를 **매개변수명 와 같은 형태로 입력하면 개수가 정해지지 않은 (키=값)을 매개변수에 dictionary 형태로 저장할 수 있음
- 일반적으로 **매개변수명은 **kwargs 로 사용됨
- 일반 매개변수와 **kwargs를 입력값으로 함께 사용할 수 있으며, 일반적으로 **kwargs를 가장 뒤에 위치시키거나 매개변수를 위치에 맞게 지정하여 정의하는 것이 일반적임
def test(**kwargs):
print('kwargs:', kwargs)
print('type:', type(kwargs))
test(a=1, b=2, c=3) # 출력값 : kwargs: {'a': 1, 'b': 2, 'c': 3} / type: <class 'dict'>
def test(a, **kwargs):
print('a:', a)
print('kwargs:', kwargs)
print('type:', type(kwargs))
test(0, b=2, c=3) # 출력값 : a: 0 / kwargs: {'b': 2, 'c': 3} / type: <class 'dict'>
def test(**kwargs, a):
print('a:', a)
print('kwargs:', kwargs)
print('type:', type(kwargs))
# 출력값 : SyntaxError: invalid syntax
def test(**kwargs={'b': 2, 'c': 3}):
print('kwargs:', kwargs)
print('type:', type(kwargs))
# 출력값 : SyntaxError: invalid syntax
반응형
'개발 > Python' 카테고리의 다른 글
[파이썬, Python] pandas 활용법 총정리 (0) | 2024.07.07 |
---|---|
[파이썬, Python] numpy 활용법 총정리 (0) | 2024.07.07 |
[파이썬, Python] str 정리 (0) | 2022.04.05 |
[파이썬, Python] int 정리 (0) | 2022.04.05 |
[파이썬, Python] 한 줄에 여러 print 출력하기 (0) | 2022.04.04 |