티스토리 뷰
Programming/Fundamental
[lambda] 람다 표현식 (lambda expression) with Python
progrunman 2022. 5. 20. 21:03기본개념
- 익명 함수(Anonymous functions)를 지칭하는 용어
- (input-parameters) -> expression 형태
※ () : 입력매개변수, expression : 함수본문식
1. 입력 매개변수가 없는 경우 : () -> expression
2. 입력 매개변수가 1개인 경우 : input-parameter -> expression
3. 입력 매개변수가 여러개인 경우 : (input-parameters) -> expression
4. 본문식이 블록(여러줄)으로 구성되는 경우 : (input-parameters) -> { sequence-of-statements; }
특징
1. 장점
- 코드의 간결함을 통한 가독성 증가(대표적으로 이터레이션 관련 코드)
- 지연연산을 통한 퍼포먼스 향상 등
2. 단점
- 디버깅시 콜스택 추적이 힘듬
- 오남용시 가독성 및 퍼포먼스가 오히려 저하될 소지가 있음
- 언어에 따라 미지원하는 경우도 있음
Python 예제
# 1. 입력 매개변수가 없는 경우 : lambda: expression
(lambda: print("Hello, lambda."))()
# 익명함수이기 때문에 아래와같이 변수 할당하여 사용가능
hello = lambda: print("Hello, lambda.")
hello()
# 2. 입력 매개변수가 1개인 경우 : lambda input-parameter: expression
hello = lambda x: print(f"{x}, lambda.")
hello("Hello")
# 3. 입력 매개변수가 여러개인 경우 : lambda input-parameters: expression
hello = lambda x, y: print(f"{x}, {y}.")
hello("Hello", "lambda")
# 4. 본문식이 블록(여러줄)으로 구성되는 경우 : lambda input-parameters -> ( sequence-of-statements )
# 단, python에서는 pythonic하지 않기 때문에 multi-line 람다식을 지원하지 않으며, 이런경우 일반함수로 분리
# 각 라인에서 상태를 공유하지 않아서 아래와 같이 별도로 분리시켜 어거지로 작성은 가능
hello = lambda x, y: (
print(x, end=", "),
print(y, end=".\n")
)
hello("Hello", "lambda")
이터레이션 예제
# 1. 전통적인 방법
for i in range(10):
print(i)
# 2. map 활용
list(map(lambda x: print(x), range(10)))
# 3. list comprehension 활용
[print(x) for x in range(10)]
- map, filter, reduce 같은 이터레이션 관련 내장함수에 활용하면 좋음
References
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Scraping
- initialize
- 유니티
- RuntimeInitializeOnLoadMethod
- Singleton
- Custom Package
- github
- git
- logging
- Python
- firestore
- Addressables
- Visual Studio Code
- vscode
- 코루틴
- gcp
- Debug
- 비동기
- 싱글톤
- selenium
- async
- 닷넷
- C#
- framework
- await
- coroutine
- unity
- VS2022
- .net
- 환경설정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함