[Python] 함수(1)
프로그래밍에서의 함수란?
간단히 말하면 mapping임.
어떤 입력이 주어지면 해당하는 로직을 거쳐 나오는 출력을 전달해주는 것 (입력에 따른 출력)
python에는 len, sum, range 등 여러 내장 함수가 있음.
또, 원하는 대로 함수를 정의할 수 있음.
함수의 정의
- def 키워드를 통해 정의 (definition의 줄임말)
예)
def add(x, y):
n = x + y
return n
c = add(30, 300)
print(c)
330
- 함수의 이름은 어떤 기능의 함수인지 나타낼 수 있게 명시해줘야함.
함수의 사용(호출)
- 함수는 일종의 블랙박스이고 정의할 때 받기로 한 parameter를 전부 충족시켜줘야 작동함
Parameter(Argument) (인자)
- 함수에 전달되는 입력(input)
- 입력이 필요하지 않을 수도, 1개만 있을 수도, 여러 입력이 존재할 수 도 있음
- int, string, float, boolm, list, dict 등 어떤 객체도 전달 가능
- 함수도 함수의 파라미터로 전달 가능
- python은 타입 명시가 없기 때문에 생성할 때 의도된 parameter 타입을 맞춰 입력해주는 게 중요함
- 또 parameter 전달 시 정의된 순서를 지켜야 함
Default parameter (기본 인자)
- parameter를 명시하지 않았을 때 기본적으로 사용할 값을 지정할 수 있음
예)
def add(x, y, z=5):
a = x + y + z
return a
add(10, 20)
35
세 번째 parameter를 명시하지 않았지만 기본값인 5가 대입되어 결과를 도출함
- 기본 parameter의 다른 예
- print 함수
- sep, end, file 등 여러 기본 parameter를 가짐
- print 함수
[##_Image | kage@PCZgn/btrTQwS3RBF/LZAM6TYkriM0BOK8inhilk/img.png | CDM | 1.3 | {“originWidth”:2064,”originHeight”:152,”style”:”alignCenter”,”filename”:”스크린샷 2022-12-17 16.00.06.png”}_##] |
예)
print(1,2,3, sep='!', end='%%%')
print(2,3,4, sep='p')
1!2!3%%%2p3p4
Default parameter 사용 시 주의 점
- default parameter 뒤에 일반 parameter가 위치할 수 없음
예)
def test(a,b,c=1) # O
def test(a,b=1,c) # X
Keyword parameter
- python에서는 parameter를 전달할 때 이름을 명시할 수 있고, 순서를 무시할 수 있음(명시하지 않을 경우 정의할 때 받았던 순서대로 전달)
def test(x, y, z):
a = x + y + z
return a
test(x=10, z=3, y=50)
63
Return
- 기본적으로 함수의 종료를 명시
- return 옆에 값이나 수식이 있다면 그 값을 호출자(caller)에게 반환
- return 만 존재하면 None 반환
- return이 없으면 코드 블록이 종료되면 종료로 간주, 이때도 None 반환
def weird_multiply(x, y):
if x > 10:
return x * y
weird_multiply(12, 5)
60
def weird_multiply(x, y):
if x > 10:
return
print(x + y)
return (x + 2) * y
c = weird_multiply(12, 5)
print(c)
None
def weird_multiply(x, y):
if x > 10:
return x * y
c = weird_multiply(2, 5)
print(c)
None
Multiple return (복수 값 반환)
- tuple을 통해 복수개의 값 반환 가능(여러 개의 값을 반환하는 것 같지만 사실은 tuple을 반환하는 것임)
def add_mul(x, y):
s = x + y
m = x * y
return s, m
c = add_mul(20, 3)
print(type(c))
print(c)
<class 'tuple'>
(23, 60)
tuple unpacking을 이용하면
def add_mul(x, y):
s = x + y
m = x * y
return s, m
a, b = add_mul(20, 3)
print(a, b)
23 60
댓글남기기