[Python] 함수(Function)

hengu·3일 전

📘 함수

1. 함수란?

  • 어떤 작업을 수행하는 코드 묶음
  • 입력값을 가지고 어떤 일을 수행한 후 그 결과물을 내어 놓는 것
  • 필요할 때마다 함수 이름을 호출하는 것만으로 해당 코드를 실행할 수 있음
  • 함수를 사용하면
    • 코드 재사용성 증가
    • 코드 가독성 향상
    • 유지 보수성 개선
# 함수 정의
def 함수_이름(매개변수1, 매개변수2, ...):
	실행할 코드1
    실행할 코드2
    ...
	return 반환값

# 함수 호출
함수_이름(인자)

2. 매개변수와 인자

  • 매개변수(Parameter)
    • 함수에 입력으로 전달된 값을 받는 변수
    • 함수를 정의할 때, 이름만 적어두는 자리표
  • 인수(Arguments)
    • 함수를 호출할 때 전달하는 입력값
    • 함수를 실제로 부를 때, 실제로 넣는 값
def add(a, b):      # a, b는 매개변수
	return a + b
    
result = add(3, 5)  # 3, 5는 인자
print(result)  # >>> 8

3. 반환값(Return Value)

  • 함수가 일을 끝내고 결과를 돌려주는 역할
  • return을 만나면 함수는 즉시 종료

🔎 함수 다루기

1. 여러 값 반환

def info():
	name = 'hengu'
    age = 20
    return name, age
    
n, a = info()
print(n, a)  # >>> hengu 20

2. 기본값 매개변수

  • 매개변수에 기본값을 지정할 수 있음
  • 인자를 생략해도 작동
def hello(name = 'ho'):
	print(f'{name}님, 안녕하세요!')

hello()         # >>> ho님, 안녕하세요!
hello('hengu')  # >>> 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)  # >>> 3

6. 입력값X, 리턴값O

def say():
	return 'Hi'

a = say()
print(a)  # >>> Hi

7. 입력값O, 리턴값X

def add(x, y):
	print(f'{x}, {y}의 합은 {x + y}입니다.')
    
add(1, 2)  # >>> 1, 2의 합은 3입니다.

# 결과를 출력만 하고 리턴하지 않을 때, 리턴값은 None
a = add(1, 2)
print(a)  # >>> None

8. 입력값X, 리턴값X

def say():
	print('Hi')
    
say()  # >>> Hi

9. 함수의 리턴값은 하나

  • 함수는 여러 값을 리턴하는 것처럼 보이지만, 실제로는 튜플 1개를 리턴
  • 튜플을 분해해서 받는 것 가능
def add_mul(x, y):
	return x + y, x * y

result = add_mul(2, 3)
print(result)  # >>> (5, 6)

r1, r2 = add_mul(2, 3)
print(r1)  # >>> 5
print(r2)  # >>> 6

10. 리턴문은 단 한 번만 실행

  • 함수는 리턴을 만나면 즉시 종료됨
def add_mul(x, y):
	return x + y
    return x * y

print(add_mul(2, 3))  # >>> 5

11. 가변 인자(*args)

  • 입력값이 몇 개인지 모를 때 사용
  • 여러 개의 입력값을 한 번에 받을 수 있게 해주는 기능
  • *args는 입력값들을 튜플로 받아서 반복문으로 처리할 수 있음
  • *args, *numbers, *values 등 이름은 아무거나 가능함
def add(*args):
	result = 0
    for i in args:
    	result += i
    return result

print(add(1, 2))           # >>> 3
print(add(1, 2, 3, 4, 5))  # >>> 15

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))    # >>> 9
print(add_mul('mul', 2, 3, 4))    # >>> 24

13. 키워드 가변 인자(**kwargs)

  • key = value 형태로 전달된 입력값들을 딕셔너리로 받아주는 기능
def ex(**kwargs):
	print(kwargs)

ex(x = 1)					  # >>> {'x': 1}
ex(name = 'hengu', age = 20)  # >>> {'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))         # >>> 8
print(add_lambda(3, 5))  # >>> 8

15. 함수 Docstring

  • 문서 문자열은 파이썬 함수에서 삼중 따옴표(""")로 작성
  • 함수 사용법과 의도를 기록할 수 있음
def add(x, y):
	"""두 수를 더한 값을 반환하는 함수"""
    return x + y

🔎 지역 변수 vs 전역 변수

  • 함수 안에서 선언된 변수는 지역 변수
  • 함수 밖에서 선언된 변수는 전역 변수
  • 두 변수는 스코프가 다름
x = 10  # 전역 변수

def my_func():
	x = 5  # 지역 변수
    print('함수 내부:', x)

my_func()              # >>> 함수 내부: 5
print('함수 외부:', x)  # >>> 함수 외부: 10
profile
안낭하삽나까

0개의 댓글