👩‍💻 Develope/Python

[Python] 매개 변수와 람다(lambda) 표현식

heywantodo 2023. 4. 10. 13:57
728x90
반응형

[Python] 매개 변수와 람다(lambda) 표현식

매개 변수 (parameter)

함수에 입력으로 전달된 값을 받는 변수

인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수

 

🔎 인수 (argument)

함수가 호출될 때 함수로 값을 전달해줌

 

매개 변수 사용

1. 입력값을 받아서 사용

def 함수이름 (매개변수):
	수행 할 문장
    return 리턴값
def sub(a, b):
	return a-b

print(sub(7, 3))

 

2. 입력받는 값이 몇개일 지 모를때

  • 매개변수 이름 앞에 ' * ' 를 붙이면 입력값을 전부 모아서 튜플로 만들어 줌 
def 함수이름 (*매개변수):
	수행 할 문장
    return 리턴값
def add_many(*args):
    result = 0
    for i in args:
        result = result + i
    return result
    
add_many(1, 2, 3)
add_many(1, 2, 3, 4, 5, 6)

 

3. 키워드 매개변수 

  • 매개변수 이름 앞에 ' ** ' 를 붙이면 매개변수는 딕셔너리가 되고, key=value 형태의 입력값이 저장됨
def 함수이름 (**매개변수):
	수행 할 문장
    return 리턴값
def print_kwargs(**kwargs):
	print(kwargs)
    
print_kwargs(name='hw', age=25)
{'name': 'hw', 'age': 25}

 

매개 변수 초깃값 설정

  • 매개변수에 미리 값을 넣어 줄 수 있음
  • 초기화 시키고 싶은 매개변수는 항상 뒤쪽에 놓아야 함
def my_self(name, age=25):
    print(f"나의 이름은 {name} 입니다.")
    print(f"나의 나이는 {age} 입니다.")

my_self('hw')
나의 이름은 hw 입니다.
나의 나이는 25 입니다.

 

lambda 

  • 함수를 한줄로 간결하게 만들때 사용
  • 함수를 사용해야 할 정도로 복잡하지 않거나, 함수를 사용할 수 없는 곳에 주로 쓰임
함수명 = lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식
add = lambda a, b: a+b

print(add(2,3))

아래 함수와 동일

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

 

lambda 조건부 표현식

  • if, else를 사용할 때는 콜론을 붙이지 않음
  • if를 사용했다면 반드시 else를 사용해야함, if만 사용하면 문법 에러 발생
  • elif는 사용 불가 
lambda 매개변수: 식1 if 조건식 else 식2

 

1️⃣ map

  • 함수와 리스트를 인자로 받은 후, 리스트로부터 원소를 하나씩 꺼내 함수에 적용
  • 결과를 새로운 리스트에 저장

EX) 리스트 a에서 3의 배수를 문자열로 변환

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(map(lambda x: str(x) if x % 3 == 0 else x, a))
[1, 2, '3', 4, 5, '6', 7, 8, '9', 10]

 

2️⃣ filter

  • 반복 가능한 객체에서 특정 조건에 맞는 요소만 가져옴
  • filter에 지정한 함수의 반환값이 True일 때만 해당 요소를 가져옴

EX) 5보다 크고 10보다 작은 수 가져오기

a = [8, 3, 2, 10, 15, 7, 1, 9, 0, 11]
list(filter(lambda x: x > 5 and x < 10, a))
[8, 7, 9]

 

3️⃣ reduce

  • 반복 가능한 객체의 각 요소를 지정된 함수로 처리한 후 이전 결과와 누적해서 반환

EX) 리스트에 저장된 요소를 순서대로 더한 뒤 누적된 결과를 반환

from functools import reduce

a = [1, 2, 3, 4, 5]
reduce(lambda x, y: x + y, a)
15

 

 

참조

https://wikidocs.net/24#_10

https://dojang.io/mod/page/view.php?id=2360

728x90
반응형