함수

✒️ 2025-05-19 10:22 내용 수정

Do it! 점프 투 파이썬(2017년 발행) 내용을 정리


입력 받은 값에 대해 어떤 출력값을 내는 것

def 함수명(매개변수):
	# 수행할 내용
public String test(int a) {
	// 수행할 내용
}
function testFn(args) {
	// 수행할 내용
}
>>> def add(a, b):
...     return a+b
...

>>> c = add(1, 2)
>>> c
3

함수의 형태

  1. 일반적인 함수 : 매개변수와 반환값이 있는 함수다.
def 함수명(매개변수):
	# 수행할 내용
	return 반환값
  1. 매개 변수가 없고, 반환값이 있는 함수다.
def 함수명():
	# 수행할 내용
	return 반환값
  1. 매개변수가 있고, 반환값이 없는 함수다.
def 함수명(매개변수):
	# 수행할 내용
  1. 매개변수와 반환값이 없는 함수다.
def 함수명():
	# 수행할 내용

매개변수 다루기

  1. 매개변수를 지정하여 호출할 수 있다.
    • 매개변수를 지정하여 호출하면 매개변수의 순서에 상관없이 사용할 수 있다.
>>> def mult(a, b):
...     return a * b
...
>>> print(mult(a=3, b=5))
15

>>> def sub(a, b):
...     return a - b
...
>>> print(sub(b=7, a=5))
-2
  1. 매개변수가 여러 개인데 몇 개가 될지 모를 때 매개변수 부분에 *매개변수로 이를 처리할 수 있다.
    • *매개변수는 함수에 전달된 인수를 모두 모아 튜플로 만든다.
    • 튜플 자료형이므로 인수가 내부에선 변하지 않는다.
def 함수명(*매개변수):
	# 수행할 내용
>>> def add(*args):
...     result = 0
...     for i in args:
...         result += i
...     return result
...
>>>

>>> add(1, 2, 3, 4, 5)
15
  1. 키워드 매개변수는 **kwargs로 사용 하며, 이 경우 매개변수는 딕셔너리가 되어 모든 key=value 형태의 입력값이 그 딕셔너리에 저장된다.
def 함수명(**kwargs):
	# 수행할 내용
>>> def printer(**kwargs):
...     print(kwargs)
...
>>> printer(name="kim", age=30)
{'name': 'kim', 'age': 30}
  1. 매개변수에 초기값을 설정할 수 있다.
    • 초기화할 매개변수를 설정할 때 매개변수의 위치는 항상 뒤쪽에 둬야 한다.
    • 중간 혹은 앞에 배치할 경우 Python 인터프리터는 함수에 인자로 넘겨준 값들을 어떤 매개변수에 초기화할지 판단하기 어렵기 때문에 오류를 발생 시킨다.
>>> def intro(name, open=False):
...     print(f"{name}")
...     if open:
...         print(f"{name} is open")
...     else:
...         print(f"{name} is closed")
...     return
...

>>> intro("door")
door
door is closed

>>> intro("door", True)
door
door is open

함수 내 변수의 효력 범위

>>> a = "pizza"
>>> def order(a):
...     a += " and chicken"
...     print(a)
...
>>>

>>> order("beer")
beer and chicken
>>> print(a)
pizza
  1. 함수를 사용하여 함수 외부에서 선언된 변수를 수정하려면 함수의 반환값을 함수 외부 변수에 배정한다.
>>> a = "pizza"
>>> def order(a):
...     a += " and chicken"
...     print(a)
...     return a
...
>>>

>>> a = order("cake")
cake and chicken
>>> a
'cake and chicken'
  1. global 명령어를 사용하여 함수 외부에 선언된 변수를 함수 내부에서 수정할 수 있다.
    • 다만 함수는 독립적으로 존재하는 것이 좋아 되도록 사용하지 않는 것이 좋다.
>>> a = "test"
>>> def change():
...     global a
...     a += " for global"
...
>>> change()
>>> print(a)
test for global

lambda

함수명 = lambda 매개변수1, 매개변수2, ... : 표현식
>>> add = lambda a, b: a+b
>>> print(add(1,2))
3
(lambda 매개변수1, 매개변수2, ... : 표현식)(인자1, 인자2, ...)
>>> (lambda a, b: a+b)(2, 3)
5