-
[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