파이썬 함수형 프로그래밍 예제

By | August 2, 2019

함수를 인수로 전달하는 기능은 파이썬에만 국한되지 는 않지만 프로그래밍 언어의 최근 개발입니다. 이러한 유형의 동작을 허용하는 함수를 일류 함수라고 합니다. 일류 함수를 포함하는 모든 언어는 기능 스타일로 작성할 수 있습니다. 사람들이 함수형 프로그래밍에 대해 이야기할 때, 그들은 현기증 나는 수의 “기능적” 특성을 언급합니다. 그들은 불변의 데이터1, 퍼스트 클래스 함수2 및 꼬리 호출 최적화3을 언급합니다. 이들은 함수형 프로그래밍을 돕는 언어 기능입니다. 그들은 매핑, 감소, 파이프 라이닝, 재귀, currying4 및 더 높은 순서 함수의 사용을 언급합니다. 함수 코드를 작성하는 데 사용되는 프로그래밍 기술입니다. 그들은 병렬화5, 게으른 평가6 및 결정성7을 언급한다. 이들은 기능 적 프로그램의 유리한 특성입니다.

아래 의 작동하지 않는 코드는 실명 목록을 가져와 무작위로 할당 된 코드 이름으로 대체합니다. 함수형 프로그래밍 언어에서 두드러지게 나타나는 인기 있는 파이썬 기능은 목록 이해입니다. 맵 및 필터 함수와 마찬가지로 목록 이해를 통해 간결하고 표현적인 방식으로 데이터를 수정할 수 있습니다. 0()은 문자열, s를 사용합니다. 첫 번째 문자가 `0`이면 나머지 문자열이 반환됩니다. 그렇지 않으면 Python 함수의 기본 반환 값인 None을 반환합니다. one() 동일한 작업을 수행하지만 `1`의 첫 번째 문자에 대해 수행합니다. 이것은 파이썬의 선입니다. 그것은 파이썬이 되는 것이 무엇을 의미하는지에 대한 시입니다. 여기서 관련하려는 부분은 이 코드의 출력이 5입니다. 기능 적 패러다임에서 변수를 변경하는 것은 큰 아니오이며 함수가 범위를 벗어난 것에 영향을 주는 것도 큰 노노입니다.

함수가 할 수있는 유일한 방법은 무언가를 계산하고 결과적으로 반환하는 것입니다. 기능 우선 언어가 사용하는 방식으로 작성 된 파이썬의 입문 FP 개념에 대한 자세한 투어를 위해, 나는 여기에 메리 로즈 쿡의 기사를 추천합니다. 익명(람다) 함수는 함수형 프로그래밍 구문에 매우 편리할 수 있습니다. 그들은 이름이 없으며 일반적으로 단일 목적을 가진 임시로 만들어집니다. 일부 언어는 순도에 대해 매우 엄격하며 a=3 또는 c = a + b와 같은 할당 문이 없지만 모든 부작용을 피하기는 어렵습니다. 예를 들어 화면에 인쇄하거나 디스크 파일에 쓰는 것은 부작용입니다. 예를 들어 파이썬에서 인쇄 문 또는 time.sleep(1)은 모두 유용한 값을 반환하지 않습니다. 그들은 단지 화면에 일부 텍스트를 보내거나 잠시 동안 실행을 일시 중지의 부작용에 대한 호출. 파이썬 2.4 이전과 이전 의 발전기는 출력만 생성했습니다. 호출기를 만들기 위해 생성기의 코드가 호출되면 실행이 다시 시작될 때 함수에 새 정보를 전달할 방법이 없었습니다. 생성기를 전역 변수로 보거나 호출자가 수정하는 일부 변경 가능한 개체를 전달하여 이 기능을 함께 해킹할 수 있지만 이러한 접근 방식은 지저분합니다. 이 함수는 순수하지 않습니다: 주어진 인수를 수정할 때 부작용이 있습니다.

순전히 기능으로 다시 작성하자 : 높은 순서의 기능은 데코레이터를 통해 매일 파이썬으로 구워. 데코레이터를 선언하는 한 가지 방법은 이를 반영하며@ 기호는 기본적으로 데코레이터에 대한 인수로 장식 된 함수를 전달하기위한 구문 설탕입니다. 다음은 코드 조각을 중심으로 다시 시도를 설정하고 첫 번째 성공한 값을 반환하거나 3번의 시도 후에 가장 최근의 예외를 포기하고 발생시키는 간단한 데코레이터입니다. 사전, 세트 및 목록은 강력하고 성능이 뛰어나며 파이썬틱이며 매우 유용합니다. 코드가 없으면 코드를 작성하는 것은 바람직하지 않습니다. 즉, 나는 항상 튜플 또는 없음 (빈 받아쓰기 또는 목록으로 나중에 교환)을 기본 매개 변수로 사용하고, 변경 될 수 있다는 사실에 가드하지 않고 컨텍스트에서 컨텍스트로 가변 데이터 구조를 전달하지 않으려고노력합니다.

Category: Uncategorized