파이썬 - 함수형 프로그래밍
함수형 프로그래밍
함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.
- 함수는 다른 함수의 인자로 전달될 수 있다. (=인자(매개변수)로 전달이 가능)
- 함수는 변수에 할당될 수 있다.
- 함수는 다른 함수의 결과로서 반환될 수 있다.(=다른 함수의 반환값)
함수는 다른 함수의 인자로 전달될 수 있다.
# 에러메시지를 출력하는 함수
>>> def error_message(format_func, msg):
print(format_func(msg))
# 단어의 첫글자만 대문자로 만드는 함수
>>> def to_upper(msg):
return " ".join(word.capitalize() for word in msg.split())
함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.
# 에러메시지를 출력하는 함수
>>> def error_message(format_func, msg):
print(format_func(msg))
# 단어의 첫글자만 대문자로 만드는 함수
>>> def to_upper(msg):
return " ".join(word.capitalize() for word in msg.split())
두 함수를 만들었습니다.
>>> msg = "you have limited access"
>>> error_message(to_upper, msg)
You have Limited Acces
함수는 변수에 할당될 수 있다.
매개변수로 전달될 수 있다는 의미는 변수로써 할당이 가능하다는 뜻입니다. 콜백(callback) 함수처럼 말입니다. 함수를 키워드 인자에 할당 할 수 있습니다.
>>> def france():
print("bonjour")
>>> def italy():
print('ciao')
위는 print 안의 값을 출력해주는 평범한 함수입니다. hello 라는 변수에 france() 함수를 할당합니다.
>>> hello = france
>>> print(hello)
<function france at 0x7f72d4360710>
이제 hello는 함수처럼 사용이 가능합니다. hello를 출력했더니 france() 함수가 나오네요.
hello의 자료형도 function 으로 나왔고요!
>>> hello()
bonjour
>>> print(type(hello))
<class 'function'>
함수는 다른 함수의 결과로서 반환될 수 있다.
마지막 특징은 함수의 return 값으로 함수를 사용할 수 있다는 특징입니다.
>>> def func1(x):
return x**2
>>> def func2():
return func1
func1 이란 이름에 입력값의 제곱을 곱해주는 함수를 만들었고, func2에 func1이 return 되도록 하였습니다.
>>> print(func1(3))
>>> print(func2()(3))
9
9
func1, func2 둘 다 같은 값이 반환된 것을 확인할 수 있습니다. 함수가 다른 함수의 결과로서 출력된 경우입니다.
함수형 프로그래밍은 모든 것을 객체로 표현하게끔 만드는 것입니다. 함수도 객체이기 때문에 함수를 값으로 할당하고 다른 함수의 결괏값으로 반환할 수 있습니다.
함수형 프로그래밍 철학
- 변경 가능한 상태를 불변의 상태(Immutable)로 만들어 에러를 없애자.
모든 것은 객체이다.
- 코드를 간결하게 하고 가독성을 높여 구현할 로직에 집중한다.
- 보다 효율적인 동시성 작업
Author And Source
이 문제에 관하여(파이썬 - 함수형 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@cha-suyeon/파이썬-함수형-프로그래밍
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
모든 것은 객체이다.
Author And Source
이 문제에 관하여(파이썬 - 함수형 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cha-suyeon/파이썬-함수형-프로그래밍저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)