본문 바로가기

코딩

[Python] 함수 (사용자 지정 함수, lambda, map)

1. 내장 함수

파이썬을 설치하면 기본적으로 내장되어 있는 함수이다.

예시) print(), input(), str(), max(), len() 등이 있다.

 

 

2. 사용자 지정 함수

함수를 직접 만들어서 사용할 수 있다.

함수를 만드는 코드 형식은 아래와 같다.

def 함수명(매개변수1, 매개변수2, ...):
    명령1
    명령2
    ...
    return 반환값


매개변수는 지역(local)변수로, 전역(global)변수와는 달리 함수 내에서만 적용된다.

따라서 전역변수와 매개변수가 같더라도 둘은 사실 다르다.

아래 예시에서도 함수에 인풋으로 들어간 x=29(매개변수)가 x=38(전역변수)에 영향을 주지 못함을 알 수 있다. 

#Example
x = 38

def function_1(x):
    x = x+1
    return x

print(function_1(29))
print(x)

>> 30

>> 38


또한, 함수를 정의할 때 return 부분은 없을 수 있다.

return이 있는 경우 print(함수(인풋))을 작성해야 결과값을 추출할 수 있고,

return이 없는 경우 (그리고 함수 내부에 print가 있는 경우) 함수(인풋)만으로 결과값을 추출해야 한다.

#Example : return 있는 경우
def function_1(x):
    x = x+1
    return x

function_1(29)
print(function_1(29))

>> 30 --- print(function_1(29)) 로 인한 추출값

#Example : return 없는 경우
def function_1(x):
    x = x+1
    print(x)

function_1(29)
print(function_1(29))

>> 30  --- function_1(29) 로 인한 추출값

>> 30        --- print(function_1(29)) 로 인한 추출값

      None  --- print(function_1(29)) 로 인한 추출값

 

 

3. lambda 익명 함수

위 전형적인 방법 말고도, lambda를 활용해 간단한 함수를 직접 만들 수 있다.

lambda를 이용한 함수 정의 형식은 아래와 같다.

함수명 = lambda 매개변수1, 매개변수2, ... : 반환값
#Example
function_1 = lambda x, y : x*y + 3

print(function_1(5, 6))

>> 33

 

 

4. map 함수

map은 시퀀스 자료형(문자열, 리스트, 튜플)의 요소를 하나씩 가져와 함수에 적용하는 하나의 함수이다.

아래 형식에서 x는 변수라 자유롭게 변경 가능하며, 함수에 필요한 매개변수 수만큼 시퀀스가 필요하다.

map으로 실행한 결과는 list(변수)로 확인할 수 있다.

x = map(함수명, 시퀀스)

print(list(x))
#Example : 매개변수 1개인 경우, 시퀀스 1개
func = lambda x : x*3

result = map(func, [1, 2, 3])

print(list(result))

>> 3, 6, 9

#Example : 매개변수 2개 이상인 경우, 그 만큼의 시퀀스
func = lambda x, y : x*y + 3

result = map(func, [1, 2, 3], (2, 2, 4))

print(list(result))

>> [5, 7, 15]