상태이상 : 호기심 중독

이것저것 알아두면 언젠간 도움이 된다.

코딩/Python!

함수 [Python]

IT코코아 2018. 7. 20. 02:57

Python 함수선언

def 함수명(매개변수):
    ...
    ...
    ...

특징 : 함수의 자료형을 따로 정해주지 않아도 된다. 
        그렇기 때문에 함수에서 값을 리턴해주고 싶다면 그냥 return을 이용하
        면 된다. 매개변수 역시 자료형을 표현해 주지않아도 된다. 

ex)

def add(a, b):
    return a+b

print(add(1,3))

리턴값이 있는 함수는 변수에 값을 넣을 때 자주 이용합니다.

def add(a, b):
    return a+b

a = add(1,3)
print(a)

그렇기 때문에 이렇게 사용할 수도 있습니다.

함수의 매개변수는 꼭 있어야만 하는 것은 아닙니다.
이는 함수에게 아무것도 전달해 주지 않고 함수를 호출시 함수안의 실행문만 실행하는 방식입니다.

def su():
    return 10

print(su())

그리고 함수에서 꼭 값을 반환 하지 않아도 됩니다.

def add(a, b):
    print(a+b)

add(1,3)

함수의 매개변수를 선언할 때 미리 초기화 하기.

def cal(a, b, mod = 'add'):
    if(mod == 'add'): return a+b
    if(mod == 'sub'): return a-b
    if(mod == 'mul'): return a*b
    if(mod == 'div'): return a/b

a = cal(1,2)
b = cal(1,2,'add')
c = cal(2,3,'mul')

print(a,b,c)

함수를 정의할 때, 매개변수를 미리 초기화 할 수 있습니다. 이러한 매개변수를 디폴트 매개변수라고 합니다.
디폴트 매개변수는 함수를 호출할 때 디폴트 매개변수에 해당하는 인자값을 입력해 주지 않아도 미리 초기화한 상태로 함수에 넘겨지게 됩니다.


디폴트 매개변수를 함수를 정의할 때 주의할 점은 일반적인 매개변수 뒤에 두어야 한다는 것 입니다.
그렇지 않으면, 함수를 호출할때 넘겨준 매개변수를 함수를 정의한 매개변수의 순서와 매칭이 안되어 오류를 내게됩니다.

def cal(a, mod = 'add', b ): #이 경우 오류
    if(mod == 'add'): return a+b
    if(mod == 'sub'): return a-b
    if(mod == 'mul'): return a*b
    if(mod == 'div'): return a/b

a = cal(1,2)
b = cal(1,2,'add')
c = cal(2,3,'mul')

print(a,b,c)

함수의 인수값의 개수가 가변적일 때

def add(*data):
    sum = 0
    for i in data:
        sum = sum + i
    return sum

print(add(1,2,3))
print(add(1,2,3,4,5))

함수를 정의할 떄 매개변수의 앞에다가 *을 붙여주면 함수를 메인에서 사용할 때, 함수의 인자값의 수를 가변적으로 넘겨줄 수 있습니다.

*을 매개변수에 붙이면 매개변수를 함수가 받을 때, 여러개의 인자값들을 튜플로 만들어 넘어가게 됩니다.

키워드 파라미터

def man(**info):
    print(info)

man(name = 'john', old = 34)

**를 매개변수에 붙이면 함수를 사용할 때 인자값을 key = value 형식으로 넘겨줘야하며 함수의 매개변수 info는 입력받은 한쌍의 key, value값을 딕셔너리 형식으로 저장됩니다.
*만 붙였을 때와 동일하게 입력하는 인자값의 개수는 가변적입니다.

반응형