2.14. 함수 정의하기¶
함수는 코드 블록을 이름 아래에 묶어 여러 곳에서 호출할 수 있게 합니다. 계산, 동작, 또는 형태를 갖춘 작업이 두 번 이상 등장하는 곳이라면 어디든, 함수가 그것을 하나의 이름 붙은 것으로 바꿔 줍니다.
키워드는 def입니다:
def greet(name):
print("hello,", name)
greet("Alice")
greet("Bob")
출력:
hello, Alice
hello, Bob
def로 시작하는 줄은 정의입니다. 함수를 생성하지만 본문을 실행하지는 않습니다. greet("Alice")를 호출하는 것이 들여 쓴 블록을 실행하는 것입니다.
2.14.1. 매개변수와 인수¶
def 줄의 괄호 안 이름들은 매개변수입니다. 호출자가 제공할 값을 위한 자리표시자입니다. 실제로 전달되는 값은 인수입니다. 함수는 0개 이상의 매개변수를 받을 수 있습니다:
def square(x):
return x * x
def add(a, b):
return a + b
def is_even(n):
return n % 2 == 0
잘못된 개수의 인수로 호출하면 즉시 TypeError가 발생합니다.
2.14.2. return¶
return 문은 함수를 즉시 종료하고 값을 호출자에게 돌려줍니다:
def absolute(x):
if x < 0:
return -x
return x
return에 도달하지 않거나(또는 값이 없는 단순 return이 있는) 함수는 None을 반환합니다:
>>> def shout(text):
... print(text.upper())
...
>>> result = shout("hi")
HI
>>> print(result)
None
함수는 여러 개의 return 문을 가질 수 있습니다. 가장 먼저 도달한 것이 이기고, 본문의 나머지는 건너뜁니다.
2.14.2.1. 여러 값 반환하기¶
Python은 호출당 하나의 객체를 반환하지만, 그 객체는 tuple일 수 있으며, 호출자는 그 자리에서 그것을 언패킹할 수 있습니다:
def minmax(values):
return (min(values), max(values))
lo, hi = minmax([3, 1, 4, 1, 5, 9])
반환값을 둘러싼 괄호는 선택 사항입니다. return a, b와 return (a, b)는 같습니다.
2.14.3. 독스트링¶
함수 본문의 첫 번째 문으로 놓인 문자열 리터럴은 독스트링입니다. 함수 객체에 저장되며 help()가 표시하는 내용입니다:
def scale(value, factor):
"""Multiply ``value`` by ``factor`` and return the result."""
return value * factor
IDE는 커서가 함수 이름 위에 올라가면 툴팁에 독스트링을 표시하므로, 한 줄짜리 요약만 있어도 그 값을 합니다. 삼중 따옴표 문자열을 사용하면 더 자세한 설명이 유용할 때 독스트링이 여러 줄에 걸쳐질 수 있습니다.
2.14.4. 명명 규칙¶
함수 이름은 snake_case를 사용합니다. 즉 밑줄로 구분된 소문자 단어들입니다. 이름은 함수가 무엇을 하는지 설명해야 합니다:
좋음:
read_temperature,parse_header,is_valid.피하기:
do_stuff,handle1,temp_func.
선행 밑줄(_helper)은 함수가 모듈 내부용임을 표시합니다. 이 관례는 널리 존중되지만 Python에 의해 강제되지는 않습니다.