ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 함수
    데이터분석/Python 2023. 3. 29. 17:32

    오늘은 Python에서 쓰이는 함수에 대해 공부해볼게요!

    앞서 while 문과 for 문을 통해 반복 작업을 할 수 있다고 했는데,

    그 반복 작업을 여러 번 반복하고 싶을 땐 함수를 사용할 수 있습니다!

    함수의 역할이 엄청 중요하다고 할 수 있죠.

     

    함수란?

    함수는 수학에서 쓰이는 의미와 프로그래밍에서 쓰이는 의미가 조금은 다릅니다.

    입력값을 통해 출력값을 출력한다는 것은 동일하지만, 프로그래밍에서 함수 하나는 하나의 기능을 의미합니다.

    함수의 기본 구조는 다음과 같습니다.

    def 함수명(매개변수):
        수행할 문장 1
        수행할 문장 2
        ...

    함수를 만들 땐 def 키워드를 이용해서 만들면 됩니다.

     

    가장 간단하게 덧셈을 함수로 만들어 보겠습니다.

    def 키워드를 써주고 add라는 이름의 함수를 만들었습니다.

    이 함수에는 a와 b라는 매개변수가 필요한 형태이고,

    add(3, 5)와 같이 3과 5라는 인수를 통해 함수의 결과를 출력할 수 있습니다.

    매개변수와 인수가 헷갈릴 수 있지만 이렇게 예제를 통해 이해하시면 좀 더 쉽겠죠?

     

    함수의 형태

    함수는 크게 4가지로 구분됩니다.

    첫째, 가장 흔하게 사용되는 경우로는 함수의 매개변수와 리턴값이 모두 있는 함수입니다.

    위에서 봤던 add 함수가 바로 이 경우에 해당됩니다.

     

    둘째, 함수의 매개변수는 없고 리턴값만 있는 함수입니다.

    위 예제에서는 인수 없이 그냥 리턴값만 출력하는 것을 보실 수 있습니다.

     

    셋째, 함수의 매개변수는 있지만 리턴값은 없는 함수입니다.

    위 예제를 보면 구구단을 출력하는 함수인데,

    num이라는 매개변수는 있지만 return은 없이 print로 결과가 출력됨을 보실 수 있습니다.

     

    마지막으로, 함수의 매개변수와 리턴값이 모두 없는 함수입니다.

    이 예제를 보면 위에서 본 say_hi 함수랑 비슷하게 함수에 매개변수가 없기 때문에

    아무런 인수 없이 say_hi()를 실행해도 'Hi!'라는 출력값이 나옵니다.

    하지만 이 경우에는 return도 없고 print로 결과가 출력되는 것을 확인할 수 있습니다.

     

    함수를 호출할 때 매개변수를 지정해서 호출할 수도 있습니다.

    이번엔 a에서 b를 빼주는 sub이라는 함수를 정의해봤는데요.

    원래 sub(5, 3)과 sub(3, 5)의 결과는 달라야 하지만

    보시면 a = 3, b = 5의 위치를 서로 바꿔도 동일한 결과를 반환하는 걸 보실 수 있죠?

    이렇게 호출할 때 매개변수를 지정해주면 순서와 상관 없이 해당 매개변수에 정확한 인수가 들어가게 됩니다.

     

    만약 함수의 인수가 몇 개 들어올 지 모를 땐 어떻게 하면 될까요?

    그럴 땐 *를 매개변수 앞에 붙여서 개수의 자율성을 부여해줍니다.

    인수로 들어온 모든 값들을 다 더해주는 add_all 함수를 만들어봤습니다.

    이렇게 *args 매개변수를 통해 5개가 들어오든, 7개가 들어오든 잘 실행되는 걸 보실 수 있습니다.

     

    함수는 어떨 때 사용하면 좋을까요?

    똑같은 코드가 2번 이상 반복될 때 함수를 이용하면 훨씬 효율성을 높일 수 있습니다!

    그만큼 함수가 중요하다는 걸 알 수 있습니다 😊

     

    전역 변수, 지역 변수

    이번엔 함수에서 중요한 개념인 전역 변수와 지역 변수에 대해 알아보겠습니다.

    a = 10
    def add_1(a):
        a = a + 1
        
    add_1(a)
    print(a)

    인수에 1을 더해주는 add_1이라는 함수가 있다고 해봅시다.

    add_1(a)를 실행한 뒤 a를 출력해보면 어떤 값이 나올까요?

    11이라고 예상하셨죠?

    땡! 틀렸습니다!

     

    현재 a가 10으로 선언되었는데, 이건 add_1라는 함수 바깥에서 선언되었죠?

    그렇기 때문에 이 경우 a는 add_1에서의 a와 다른 변수라고 할 수 있습니다.

    a = 10에서의 a를 바로 전역 변수라고 합니다.

    이처럼 함수 바깥에서 정의된 변수들을 전역 변수라고 부릅니다.

     

    add_1 함수 안에서 정의된 a = a + 1의 a는 지역 변수입니다.

    함수 안에서만 효력이 유효한 변수라고 할 수 있습니다.

     

    그렇다면 함수 안에서 전역 변수를 사용하고 싶을 땐 어떻게 할 수 있을까요?

    두 가지 방법이 있습니다.

     

    먼저 return을 사용해서 a + 1 값을 리턴하도록 하고,

    a = add_1(a)로 변수 a를 함수 값으로 변경해주면 됩니다.

    a가 제대로 11로 출력되는 걸 볼 수 있습니다.

     

    다음으로는 global 명령어를 사용하는 건데요,

    함수 안에서 global a를 넣어 함수 밖에 있는 a 변수를 사용하겠다는 것을 나타내줍니다.

    하지만 프로그래밍을 할 때 함수 안에 global 명령어를 사용하는 것은 좋은 방법은 아니라고 합니다.

    함수는 각각 독립적으로 존재하는 것이 좋은데, global 명령어로 함수 외부에 있는 변수를 참조하게 되면

    독립적으로 있을 수 없기 때문입니다.

     

    lambda

    간단한 함수를 한 줄로 간결하게 나타내고 싶을 때 lambda 라는 키워드를 사용할 수 있습니다.

    기본 구조는 다음과 같습니다.

    함수명 = lambda 매개변수 1, 매개변수 2, ... : 매개변수를 이용한 표현식

    바로 예제를 한번 볼까요?

    앞서 def 를 사용해서 만들었던 add 함수와 비교해보면 훨씬 간단해진 걸 보실 수 있습니다.


    이렇게 함수에 대한 공부가 끝났습니다!

    처음 접하시는 분들은 많이 복잡하다고 느끼실 수도 있을 것 같아요.

    열심히 복습하고 다양한 예제 풀어보면서 감을 익혀봅시다 👍

    '데이터분석 > Python' 카테고리의 다른 글

    [Python] 반복문 while문, for문, list comprehension  (2) 2023.03.27
    [Python] 조건문 if  (0) 2023.03.24
    [Python] 변수  (0) 2023.03.22
    [Python] 파이썬 데이터 타입 (2)  (0) 2023.03.21
    [Python] 파이썬 데이터 타입 (1)  (0) 2023.03.21

    댓글

Designed by Tistory.