[이코테] 2. 파이썬 문법 부수기 - (6). 함수와 람다 표현식
Algorithm/이코테2021

[이코테] 2. 파이썬 문법 부수기 - (6). 함수와 람다 표현식

반응형

함수의 종류

파이썬에서의 함수는 2가지로 나눌 수 있음.

  • 내장 함수 : 파이썬이 기본적으로 제공하는 함수
    • input(), print()등.
  • 사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수.

 

프로그램에는 똑같은 코드가 반복적으로 사용되어야 할 때가 많으므로,

함수를 정의하여 사용함으로써 소스코드의 길이를 줄일 수 있음.

  • 매개변수 : 함수 내부에서 사용할 변수
  • 반환 값 : 함수에서 처리 된 결과를 반환
def 함수명(매개변수):
    실행할 소스 코드
    return 반환 값

 

 

 

덧셈 뺄셈 함수 정의 예제

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

def subtract(a, b):
    return a - b

result = add(1, 5)
print(result)

result = subtract(1, 5)
print(result)

''' output
6
-4
'''

 

 

 

파라미터 지정하기

파라미터의 변수를 직접 지정할 수 있으며, 이 경우 매개변수의 순서가 달라도 상관 없음.

 

 

 

global 키워드

global 키워드로 변수를 지정하면,

해당 함수에서는 지역 변수를 만들지 않고,

함수 바깥에 선언된 변수를 바로 참조함.

 

c언어는 global이라는 키워드가 없으면 자동으로 바깥 변수를 참조하게되는데,파이썬은 global이라는 키워드를 이용해야 바깥 변수를 사용할 수 있다.

a = 0

def func():
    global a
    a += 1

for i in range(10):
    func()

print(a)

'''output
10
'''

 

동일한 이름의 변수이며,

global 사용 안할 경우,

지역 변수 먼저 처리함.

array = [1, 2, 3, 4, 5]

def func():
    array = [3, 4, 5]
    array.append(6)
    print(array)

func()
print(array)

'''output
[3, 4, 5, 6]
[1, 2, 3, 4, 5]
'''

 

실제로 코딩 테스트 문제를 풀때는, 리스트 객체는 단순히 전역 변수로 사용하는 경우가 많고,

함수에서도 해당 변수를 바로 참조하도록 만드는 경우가 많기 때문에.

실제 코딩 테스트에서는 별도로 두 개 이상의 변수가 동일한 이름을 가지는 경우가 아니라면,

지역변수와 전역변수의 그 스코프 설정에 대해서 신경을 써야 하는 경우가 적긴 함.

 

 

 

여러 개의 반환 값

파이썬에서 함수는 여러 개의 반환 값을 가질 수 있음.

C++에서는 여러 개의 반환 값을 가지려면 별도의 포인터를 이용해야 하거나 클래스, 구조체를 이용하는 것이 정석인데,

파이썬은 단순하게 한꺼번에 return 가능. 이를 보고 '패킹(packing)'이라고 함.

def operator(a, b):
    add_var = a + b
    subtract_var = a - b
    multiply_var = a * b
    divide_var = a / b
    return add_var, subtract_var, multiply_var, divide_var # packing

a, b, c, d = operator(7, 3) # unpacking
print(a, b, c, d)

''' output
10 4 21 2.3333333333333335
'''

 

 

 

 

람다 표현식

람다 표현식을 활용하여 함수를 간단하게 작성할 수 있음.

특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다는 점이 특징.

그래서 이름 없는 함수라고도 불림.

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

# 일반적인 add() 메서드 활용
print(add(3, 7))

# 람다 표현식으로 구현한 add() 메서드
print((lambda a, b: a + b)(3, 7))

'''output
10
10
'''

 

 

람다 표현식 예시2

array = [('홍길동', 50), ('이순신', 32), ('조랭이떡', 74)] #튜플 형태로 있는 리스트

def my_key(x):
    return x[1] #튜플(())의 2번째 원소(숫자)를 기준으로 정렬 수행

print(sorted(array, key = my_key)) #정렬기준 my_key 함수
print(sorted(array, key = lambda x: x[1]))

'''output
[('이순신', 32), ('홍길동', 50), ('조랭이떡', 74)]
[('이순신', 32), ('홍길동', 50), ('조랭이떡', 74)]
'''

 

람다 표현식 예시3

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]

result = map(lambda a, b: a + b, list1, list2)

print(list(result))

'''output
[7, 9, 11, 13, 15]
'''

 

 

 

 

이코테 2021 시리즈 씹어먹기 by 조랭이떡

시리즈 목차

더보기
  1. 코딩테스트 출제 경향 및 알고리즘 성능 평가
  2. 파이썬 문법 부수기
    1. 수, 리스트 자료형
    2. 문자열, 튜플, 사전, 집합 자료형
    3. 기본 입출력
    4. 조건문
    5. 반복문
    6. 함수와 람다 표현식
    7. 자주 사용되는 표준 라이브러리
  3. 그리디
    1. 그리디 알고리즘이란?
    2. 거스름돈
    3. 1이 될 때 까지
    4. 곱하기 혹은 더하기
    5. 모험가 길드
  4. 구현
  5. DFS & BFS (추후링크)
  6. 정렬 알고리즘 (추후링크)
  7. 이진 탐색 (추후링크)
  8. 다이나믹 프로그래밍 (추후링크)
  9. 최단 경로 알고리즘 (추후링크)
  10. 기타 그래프 이론 (추후링크)
  11. 코딩 테스트에서 자주 출제되는 기타 알고리즘 (추후링크)
  12. 개발형 코딩 테스트 (추후링크)

 

반응형