티스토리 뷰

기본개념

- 익명 함수(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

https://www.w3schools.com/python/python_lambda.asp

 

Python Lambda

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

https://blog.advenoh.pe.kr/python/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%97%90%EC%84%9C-%EB%9E%8C%EB%8B%A4-%ED%95%A8%EC%88%98-%EC%9D%B5%EC%88%99%ED%95%B4%EC%A7%80%EA%B8%B0/

 

파이썬에서 람다 함수 익숙해지기

1. 람다란? 파이쎤에서도 이름 없는 함수인 람다 표현식을 지원한다. syntax는 아래와 같다. 파이썬에서는 bracket (ex. { })을 지원하지 않아 single line으로만 작성해야 한다. 람다에서 multi-line을 작성

blog.advenoh.pe.kr

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함