Story of CowHacker

파이썬_함수 본문

공부/Python

파이썬_함수

Cow_Hacker 2021. 6. 4. 15:12
728x90

파이썬을 사용하면서 함수라는 녀석을 사용하면 좀 더 효율적이고, 가독성이 뛰어난 코딩을 할 수 있다.

 

함수란?

수학에서 나온 함수와 파이썬에서 나온 함수는 같은 의미로 사용되고 있다.

코딩 시 반복적인 부분이나 추후 수정을 할 때 매우 효율적으로 작용하는 것이 바로 함수다.

 

 

 

a = 1
b = 2

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

print(add(a,b))

함수를 활용한 코딩이다.

간단 한 덧샘을 구현한 함수다.

 

여기서 함수의 이름은 add고,

이 녀석의 역할은 두 개의 입력값을 받아 그 둘의 입력값을 더해 결괏값으로 출력하는 행동을 한다.

 

 

 

 

다음은 함수를 사용할 시 구별해야 할 용어에 대해 알아보겠다.

def add(a, b):  # a, b는 매개변수
    return a+b

print(add(1, 2))  # 1, 2는 인수

위 코드를 보면 매개변수, 인수 두 단어가 보인다.

 

여기서 print란 역할을 수행하기 위해선 함수를 호출 ( 사용 ) 해야 한다.

 

  * add라는 함수한테 인수 값 1,2를 전달한다. 이때 1,2는 인수라고 불린다.

  * 1,2를 add 함수한테 주면 매개변수라는 녀석이 인수값을 전달받는다.

  * 그 후 add 함수의 역할인 덧셈을 처리한 후 결괏값을 출력한다.

  

 

위 그림을 보면 좀 더 쉽게 이해가 될 것이다.

 

아까 설명을 그림에 빗대어 보면

인수값 1,2를 매개변수에 전달하는 걸 볼 수 있다.

그 후 결과 값을 출력한다.

 

 

혹시 함수 안에 또 함수를 사용할 수 있을까?? 궁금했다.

 

 

 

def add(a,b):  # a, b는 매개변수
    def sub(a,b):
        return b-a
    return a+b, sub(a,b)

print(add(1,2))  # 1, 2는 인수

물론 가능했다.

add함수 안에 sub 함수를 또 만들어 넣을 수 있었다.

 

 

 

 

 

 

그럼 세 개는?!

def add(a,b):  # a, b는 매개변수
    def sub(a,b):
        def mul(a,b):
            return a*b
        return b-a, mul(a,b)
    return a+b, sub(a,b)

print(add(1,2))  # 1, 2는 인수

결과 값이 좀 복잡했지만, 역시 가능이었다.

결과 값이 복잡하다!!

먼저 추출하려면 출력 값이 어떤 타입인지 알아야 했다.

 

 

 

 

def add(a,b):  # 중첩 함수
    def sub(a,b):
        def mul(a,b):
            return a*b
        return b-a, mul(a,b)
    return a+b, sub(a,b)
print(" 중첩 함수 : " ,type(add(1,2)))

def add(a,b): # 단일 함수
    return a+b
print(" 단일 함수 : ", type(add(1,2)))

 

와! 이런! 단일, 중첩 함수에 따라 출력 값 타입이 다르다는 사실을 알아버렸다.

 

 

 

 

 

def add(a,b):
    def sub(a,b):
        def mul(a,b):
            return a*b
        return b-a, mul(a,b)
    return a+b, sub(a,b)

print(add(1,2))
print(add(1,2)[0])
print(add(1,2)[1])
print(add(1,2)[1][0])

튜플이라니!

중첩 함수를 사용하면 복잡한 결괏값이라 고민이었지만

이렇게 잘 활용할 수 있겠다는 생각도 할 수 있었다.

 

 

 

수는

학의 꽃이다.

 

 

 

 

 

 

 

 

 

728x90

'공부 > Python' 카테고리의 다른 글

파이썬_클래스  (3) 2021.06.06
크롤링  (4) 2021.03.30
Comments