공부 자료실/파이썬(Python)

파이썬(Python) - 함수

자료수집중 2020. 7. 8.
반응형

 

이번에는 파이썬의 함수에 대해 알아보겠습니다.

 

먼저 함수의 기본형은 다음과 같습니다.

def 함수명(매개변수, .....):
    수행할 코드

def는 '정의하다'의 define의 의미로 함수를 정의할 때 함수명 앞에 꼭 선언해야 합니다.

 

예제를 보며 자세히 살펴보겠습니다.

def add(a, b):  #함수 정의
    print("입력된 두 수의 합은 = ", a + b)


add(5, 7) #함수 호출

정의된 함수를 사용하기 위해서는 함수를 호출해야 합니다.

함수 호출은 다음과 같습니다.

함수명(인수, ...)

정의된 함수의 매개변수만큼의 인수를 넘겨주고 호출해야 합니다.

그리고 파이썬은 매개변수에 자료형이 따로 없기 때문에 리스트나 튜플도 바로 넘겨줄 수 있습니다.

 

 

만약 함수 호출시 넘겨야 할 데이터의 개수를 정확히 모를 경우 가변 인수(Variadic Arguments)를 사용해서 함수를 정의할 수 있습니다.

def add(*num):  #함수 정의 *매개변수 -> 가변인자
    print(num)


add(5, 7, 9, 10, 11) #함수 호출
add(5, 'asd', 9, 10, 11)

매개변수 앞에 *를 붙이게 되면 가변 인자가 됩니다. 입력된 데이터를 튜플 형태로 저장합니다.

*파이썬은 포인터 개념이 없습니다.

 

우리는 지금까지 매개변수가 정의된 차례대로 인수를 입력했습니다. 이를 위치 인수(Positional Argument)라고 합니다. 하지만 만약 매개변수가 정의된 양이 많아지게 되면 매개변수의 순서가 헷갈릴 수 있습니다.

그래서 순서와 무관하게 지정하여 전달하는 키워드 인수(Keyword Argument)에 대해 알아보겠습니다.

def id(name, age, phone):
    print("이름 = ", name)
    print("나이 = ", age)
    print("전화번호 = ", phone)


id(age=20, phone='01012345678', name='홍길동')

정의된 매개변수의 차례대로 인수를 넘겨준 게 아닌 지정해서 넘겨주기 때문에 차례를 지키지 않아도 가능합니다.

 

가변 인수와 키워드 인수를 같이 사용할 수 있습니다.

함수를 정의할 때 넘겨야 할 인수의 개수도 정확하지 않고 함수 내에서도 사용하기 쉽게 이름까지 정해서 넘겨줄 수 있습니다. 

def id(**info):
    print(info)
    print("이름 = ", info['name'])
    print("나이 = ", info['age'])
    print("전화번호 = ", info['phone'])


id(age=20, phone='01012345678', name='홍길동')

키워드 가변 인수라고 하며 **를 매개변수 앞에 입력해야 합니다.

넘겨준 값을 살펴보면 딕셔너리 형으로 저장된 모습을 볼 수 있습니다.

만약 키워드 가변 인수여러 매개변수와 같이 사용하려면

def id(num, *value, **info):

매개변수의 마지막에 정의해야 합니다.

 

매개변수의 기본값을 설정해서 사용할 수 있습니다.

항상 값이 똑같은 인수를 넘겨야 할 때 매번 넘길 필요 없이 함수를 정의할 때 매개변수에 고정해 놓을 수 있습니다.

예를 들어 2개의 정수를 받아 더한 뒤 무조건 2를 곱해야 하는 함수를 만들면

def add(a, b, mul=2):
    print((a+b)*mul)


add(5, 7)

잘 변하지 않는 데이터를 고정적으로 매개변수에 선언해서 사용하면 함수를 호출할때마다 매번 인수를 보내줄 필요 없이 사용 할 수 있습니다.

 

파이썬 함수도 반환을 할 수 있습니다.

대신 반환형이 정해지지 않았기때문에 모든 자료형이 반환이 가능합니다.

반환할때는 return을 사용합니다.

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


value = add(5, 7)  
print(value)

 

만약 다양한 자료형의 값을 반환하면

def test():  # 함수 정의
    return 1, 3.14, 'red', 4, [0, 1, 2, 3]


value = test()  # 함수 호z
print(value)

튜플형으로 반환이 됩니다.

 

반대로 return하는 데이터 만큼 변수 선언을 해서 함수를 대입하면

def test():  # 함수 정의
    return 1, 3.14, 'red', 4, [0, 1, 2, 3]


a, b, c, d, e = test()  # 함수 호z
print(a, b, c, d, e)

각 변수에 반환한 값이 차례대로 대입됩니다.

댓글