[파이썬] 함수2
사용자 정의 함수입니다.
가변인자 사용
매개변수 하나에 여러 인자를 받는 것
애스터리스크(*)를 사용하여 하나의 매개변수에 여러 인자를 받을 수 있도록 합니다. * 이것이 그런 역할을 해주는 것입니다.
복잡한 함수의 설명서 docstring
여러 사람들이 함께 협력하여 만들어갈때 많은 사람들이 다양한 함수들을 활용하기에 각각에 해당하는 함수가 어떠한 역할을 하는지 알기 어렵습니다.
이런 경우에 함수에 대한 설명을 하는 것이 바로 docstring입니다. 이는 주석으로 설명하는 것이 가장 자연스럽습니다.
def multiply(a, b, c):
"""세 개의 숫자를 곱하여 반환하는 함수."""
return a * b * c
print(multiply.__doc__) # docstring 출력
람다함수
람다 함수는 이름 없이(익명) 한 줄로 정의할 수 있는 간단한 함수입니다.
Python에서 lambda 키워드를 사용하여 정의합니다.
함축적으로 짧게 표현한 것입니다. lambda 매개변수: 표현식 입니다.
#사용자정의함수
def plus_ten(x):
return x + 10
#람다함수
lambda x: x +10
람다함수에 map() 사용하기
람다를 사용할 때 map을 많이 사용합니다. 이것은 응용해서 사용이 가능한데 코드를 살펴보며 알아보겠습니다.
string에 해당하는 값을 list 형태로 꾸미고 객체에 해당하는 것을 int 형태로 바꿉니다. 그거에 대한 map을 만들고 list(a)로 했다니 string이 아닌 int로 바뀌는 것입니다. map은 각각을 다 바꾸어주지 않아도 한번에 바꿀 수 있기에
반복문을 대신하는 함수 처리문이라고 생각해주면 됩니다.
Python 람다 함수와 map() 함수 사용법
Python에서 람다 함수(lambda function)는 익명 함수를 정의하는 방법입니다.
특히, map()과 함께 사용하면 리스트 등의 데이터를 간편하게 처리할 수 있습니다/
(lambda x: x * 10)(3, 5, 7, 9)
TypeError: <lambda>() takes 1 positional argument but 4 were given
람다 함수 (lambda x: x * 10)는 매개변수 x 한 개만 받도록 정의되어 있습니다.
그런데 (3, 5, 7, 9)처럼 여러 개의 값을 한 번에 넘겼기 때문에 매개변수 개수 불일치 오류(TypeError)가 발생합니다.
2. map()을 사용한 해결 방법
a = list(map(lambda x: x * 10, (3, 5, 7, 9)))
print(a)
[30, 50, 70, 90]
map()은 리스트나 튜플의 각 요소를 함수에 적용하여 새로운 리스트를 만들어줍니다.
- map(lambda x: x * 10, (3, 5, 7, 9))
- (3, 5, 7, 9)의 각 요소를 lambda x: x * 10 함수에 적용
- 3 → 30, 5 → 50, 7 → 70, 9 → 90 변환
- list()를 사용하여 결과를 리스트로 변환
👉 즉, map()을 사용하면 리스트나 튜플의 모든 요소를 자동으로 순회하면서 변환할 수 있습니다.