2 분 소요

프로그래밍에서의 함수란?

간단히 말하면 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를 가짐
[##_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

태그:

카테고리:

업데이트:

댓글남기기