📘 함수
1. 함수란?
- 어떤 작업을 수행하는 코드 묶음
- 입력값을 가지고 어떤 일을 수행한 후 그 결과물을 내어 놓는 것
- 필요할 때마다 함수 이름을 호출하는 것만으로 해당 코드를 실행할 수 있음
- 함수를 사용하면
- 코드 재사용성 증가
- 코드 가독성 향상
- 유지 보수성 개선
def 함수_이름(매개변수1, 매개변수2, ...):
실행할 코드1
실행할 코드2
...
return 반환값
함수_이름(인자)
2. 매개변수와 인자
- 매개변수(Parameter)
- 함수에 입력으로 전달된 값을 받는 변수
- 함수를 정의할 때, 이름만 적어두는 자리표
- 인수(Arguments)
- 함수를 호출할 때 전달하는 입력값
- 함수를 실제로 부를 때, 실제로 넣는 값
def add(a, b):
return a + b
result = add(3, 5)
print(result)
3. 반환값(Return Value)
- 함수가 일을 끝내고 결과를 돌려주는 역할
return을 만나면 함수는 즉시 종료
🔎 함수 다루기
1. 여러 값 반환
def info():
name = 'hengu'
age = 20
return name, age
n, a = info()
print(n, a)
2. 기본값 매개변수
- 매개변수에 기본값을 지정할 수 있음
- 인자를 생략해도 작동
def hello(name = 'ho'):
print(f'{name}님, 안녕하세요!')
hello()
hello('hengu')
3. 키워드 인자
- 함수 호출 시 매개변수 이름을 명시하여 인자를 전달할 수 있음
- 인자의 순서를 바꾸고 싶을 땐 키워드 방식으로 호출 가능
def info(name, age):
print(f'이름: {name}, 나이: {age}')
info(name = 'hengu', age = 20)
info(age = 22, name = 'yoo')
4. 중첩 함수
def outer():
def inner():
print('안')
inner()
outer()
5. 입력값O, 리턴값O
def add(x, y):
result = x + y
return result
a = add(1, 2)
print(a)
6. 입력값X, 리턴값O
def say():
return 'Hi'
a = say()
print(a)
7. 입력값O, 리턴값X
def add(x, y):
print(f'{x}, {y}의 합은 {x + y}입니다.')
add(1, 2)
a = add(1, 2)
print(a)
8. 입력값X, 리턴값X
def say():
print('Hi')
say()
9. 함수의 리턴값은 하나
- 함수는 여러 값을 리턴하는 것처럼 보이지만, 실제로는 튜플 1개를 리턴
- 튜플을 분해해서 받는 것 가능
def add_mul(x, y):
return x + y, x * y
result = add_mul(2, 3)
print(result)
r1, r2 = add_mul(2, 3)
print(r1)
print(r2)
10. 리턴문은 단 한 번만 실행
def add_mul(x, y):
return x + y
return x * y
print(add_mul(2, 3))
11. 가변 인자(*args)
- 입력값이 몇 개인지 모를 때 사용
- 여러 개의 입력값을 한 번에 받을 수 있게 해주는 기능
*args는 입력값들을 튜플로 받아서 반복문으로 처리할 수 있음
*args, *numbers, *values 등 이름은 아무거나 가능함
def add(*args):
result = 0
for i in args:
result += i
return result
print(add(1, 2))
print(add(1, 2, 3, 4, 5))
12. 일반 매개변수 + *args
def add_mul(ch, *args):
if ch == "add":
result = 0
for i in args:
result += i
elif ch == "mul":
result = 1
for i in args:
result *= i
return result
print(add_mul('add', 2, 3, 4))
print(add_mul('mul', 2, 3, 4))
13. 키워드 가변 인자(**kwargs)
key = value 형태로 전달된 입력값들을 딕셔너리로 받아주는 기능
def ex(**kwargs):
print(kwargs)
ex(x = 1)
ex(name = 'hengu', age = 20)
14. 람다 함수(Lambda Function)
- 람다 함수는
lambda 키워드를 사용하여 한 줄로 함수를 정의하는 방법
- 주로 간단한 연산을 위해 사용되며, 익명 함수라고도 함
def add(x, y):
return x + y
add_lambda = lambda a, b: a + b
print(add(3, 5))
print(add_lambda(3, 5))
15. 함수 Docstring
- 문서 문자열은 파이썬 함수에서 삼중 따옴표(
""")로 작성
- 함수 사용법과 의도를 기록할 수 있음
def add(x, y):
"""두 수를 더한 값을 반환하는 함수"""
return x + y
🔎 지역 변수 vs 전역 변수
- 함수 안에서 선언된 변수는 지역 변수
- 함수 밖에서 선언된 변수는 전역 변수
- 두 변수는 스코프가 다름
x = 10
def my_func():
x = 5
print('함수 내부:', x)
my_func()
print('함수 외부:', x)