Lumpy Space Princess - Adventure Time
코딩테스트/이것이 코딩 테스트다

[이것이 코딩 테스트다] 파이썬 - 함수와 람다 표현식

yaebb_82 2022. 7. 22.

 

 

함수

함수(Function)

: 특정한 작업을 하나의 단위로 묶어 놓은 것을 의미

: 함수를 사용함으로써 코드의 반복을 줄일 수 있다.

 

 

 

함수의 종류

- 내장 함수 : 파이썬이 기본적으로 제공하는 함수  ex) input, print ...

- 사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수

 

 

 

함수 정의하기

- 매개변수 : 함수 내부에서 사용할 변수

- 반환 값 : 함수에서 처리된 결과를 반환

- 기본 형태

def 함수명 (매개변수) : 
    실행할 소스코드
    return 반환 값

cf.) def = define의 약자 = 정의하겠다 라는 의미

cf.) 매개변수와 반환 값은 없을 수도 있다.

 

ex) 더하기 함수 예시

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

print(add(3,7))

cf.) print(add(3, 7)) → 여기서 3, 7을 argument(인자값) 이라고 부른다.

 

 

 

파라미터 지정하기

: 파라미터의 변수를 직접 지정할 수 있다. (매개변수 순서가 달라도 상관X)

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

print(add(b=2, a=9))

cf.) b=2는 add(a, b)에서 b에 들어가게 되고, a=9는 add(a, b)에서 a에 들어가게 된다.

 

 

 

global 키워드

: global 키워드로 변수를 지정하게 되면, 해당 함수에서는 지역 변수를 만들지 X, 함수 바깥에서 선언된 변수를 바로 참조하게 된다.

a = 0

def func():
  global a
  a+=1

for i in range(10):
  func()

print(a)

cf.) 단순히 def 안에서 global 없이 print(a) 이런 식으로 출력만 할 경우에는 오류가 발생하지 않는다.

cf.) array = [1, 2, 3, 4] 일 경우에도, def 안에서 global 없이 array.append(6) 이런 식으로 호출하는 것도 오류가 발생하지 않는다.

cf.) 만약 def 안에 전역변수와 동일한 이름의 지역변수를 선언해주면 → def 안에서는 지역변수가 우선적으로 처리된다.

 

** 전역변수 vs 지역변수 차이점 알아두기!

 

 

 

여러 개의 반환 값

: 파이썬의 함수는 여러 개의 반환 값을 가질 수 있다.

: 여러 개의 반환 값들이 묶어서 한 꺼번에 반환되는 것 → packing 이라고 한다.

: 함수를 호출할 때 반환된 값들을 차례대로 특정 변수에 담는 것unpacking 이라고 한다.

def func(a,b):
  add = a+b
  sub = a-b
  multiple = a*b
  divide = a/b
  
  return add, sub, multiple, divide

a, b, c, d = func(10, 5)
print(a, b, c, d)

cf.) add, sub, multiple, divide 한 결과는 차례대로 a, b, c, d 에 담기게 된다

 

 

 

람다 표현식 (lambda)

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

: 이름 없는 함수 라고도 불린다.

print((lambda a, b: a+b)(2, 5))

 

ex) 내장 함수에서 자주 사용되는 람다 함수

array = [('홍길동', 50), ('이순신', 20), ('김유신', 30)]

print(sorted(array, key=lambda x: x[1]))

: sorted 함수를 이용하여 정렬

: 정렬할 때에는 key가 x: x[1] 에 따라 정렬

: lambda 함수의 의미는 각각의 튜플들중 2번째 값을 선택한다는 의미

→ 결론: 리스트 내부 값들을 각 튜플의 2번째 값을 기준 오름차순으로 정렬하겠다.

 

ex) 여러 개의 리스트에 적용 (같은 규칙을 가진 함수 적용)

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

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

print(list(result))

cf.) map 함수 :  각각의 원소에 어떠한 함수를 적용시키고자 할 떄 사용한다.

 

: lambda a, b: a+b 함수를 list1 과 list2 에 적용시켜 result에 list 형식으로 출력한다.

: list1 과 list2 의 각 인덱스에 해당하는 값들은 a+b를 수행하게 되고, 해당 값들은 result로 담기게 된다.

 

 

 

반응형

댓글