이 기사는 Python 함수형 프로그래밍에 대한 자세한 분석(코드 예제)을 제공하며, 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
함수형 프로그래밍, 함수형 프로그래밍. Python은 함수형 프로그래밍을 부분적으로 지원합니다. 순수 함수형 프로그래밍의 경우 어떤 함수에 대해서도 입력이 확실하면 출력도 확실하므로 부작용이 없다고 할 수 있습니다.
우리는 함수의 계산 결과가 x = abs(-5)와 같은 변수에 할당될 수 있다는 것을 알고 있습니다. 코드>. <br>마찬가지로 변수는 <code>f = abs
와 같은 함수를 가리킬 수도 있습니다.
변수가 함수를 가리키는 경우 abs(x)
를 직접 호출하고 f(x)
를 실행하여 반환되는 결과는 정확히 동일합니다. x = abs(-5)
。
同理,变量也可以指向函数,例如f = abs
。
如果一个变量指向了一个函数,那我们直接调用abs(x)
与执行f(x)
返回的结果是完全相同。
我们也可以把函数名看成是一个变量,例如abs()
函数。执行语句abs=-5
,之后调用abs(-5)
就会报错,因为此时abs
这个变量已经不指向绝对值函数了,而是指向一个整数-5。
既然变量可以指向函数,函数也可以充当变量,那么一个函数就可以接收另外一个函数作为它自己的形式参数,即实现高阶函数。例如:
>>> def add(x , y , f ): # 把函数作为参数传入。 ... return f(x) + f(y) >>> add (-5,-2,abs) 7
语法:map(func,seq),接收两个参数,一个是函数func,一个是可迭代对象。
作用:将传入的func函数循环作用于seq序列的每个元素上,并返回新的可迭代对象。
注意:map()函数返回的是一个<map object>
,我们可以使用list()函数将所获得的结果以list形式返回。
举个栗子:用map()实现f(x)=x*x
>>> def f(x): ... return x*x ... >>> map(f,[1,2,3,4,5]) <map object at 0x0327F670> >>> list(map(f,[1,2,3,4,5])) # 传入的函数f作用于序列的每个元素调并用list() [1, 4, 9, 16, 25]
当然还可以使用其他方法实现:
exp1:list( map((lambda x:x*x),[1,2,3,4,5]))
exp2:[x*x for x in [1,2,3,4,5]]
语法:reduce(func,list)
,必须接受两个参数。
作用:把func
函数作用在list
序列上[x1,x2,x3,...]
。取出序列的头两个元素x1
和x2
,作用于func
,取的一个单一的值,例如a
,再将a
与序列的下一个元素x3
做func
运算,依此反复。其效果就相当于reduce(f,x1,x2,x3)=f(f(x1,x2),x3)
注意:使用reduce()
,必须导入模块from functools import reduce
大家可以自己找个栗子玩玩哈~~~
语法:filter(func,[序列])
,接收一个“过滤”函数,和一个序列。返回的是一个Iterator
可迭代对象。
作用:按照func
规则过滤序列,filter()
把传入的函数func
依此作用于每个元素,然后根据返回值True
orFalse
,来保留为True
的对应元素。
注意:跟map()
类似,filter()
返回的是一个可迭代对象,故需要使用list()
来查看所获得结果并返回list
abs()
함수와 같이 함수 이름도 변수로 간주할 수 있습니다. abs=-5
문을 실행한 다음 abs(-5)
를 호출하면 abs
변수가 더 이상 가리키지 않기 때문에 오류가 보고됩니다. 함수는 절대값이지만 정수 -5를 가리킵니다. 🎜3. 형식 매개변수로서의 함수🎜🎜🎜변수는 함수를 가리킬 수 있고 함수도 변수로 작동할 수 있으므로 함수는 다른 함수를 자체 형식 매개변수로 받을 수 있습니다. 즉, 고차 함수를 구현할 수 있습니다. 예: 🎜>>> def is_odd(n): ... return n % 2 == 1 # 返回0(false) 或1(True) ... >>> list( filter(is_odd,[1,2,3,4,5,6,7,8,9]) ) [1, 3, 5, 7, 9]🎜🎜2. 함수형 프로그래밍의 내장 함수🎜🎜🎜🎜1, map(func,seq)🎜🎜
<map object>
를 반환합니다. list() 함수를 사용하면 얻은 결과를 목록 형식으로 반환할 수 있습니다. 🎜🎜🎜🎜예: f(x)=x*x🎜rrreee🎜을 구현하려면 map()을 사용하세요. 물론 이를 구현하기 위해 다른 방법을 사용할 수도 있습니다.list( map( (lambda x:x *x),[1,2,3,4,5]))
[1,2,3,4의 x에 대한 x*x ,5]]🎜🎜🎜2, 감소(func,list)🎜🎜<ul class=" list-paddingleft-2">
<li>🎜🎜Syntax🎜: <code>reduce(func,list)
, 두 개의 매개변수를 허용해야 합니다. 🎜🎜list
시퀀스 [x1,x2,x3,...]
에 func
함수를 적용합니다. . x1
및 x2
시퀀스의 처음 두 요소를 꺼내 func
에 대해 작업을 수행하고 a와 같은 단일 값을 가져옵니다.
code>, 그런 다음 a
와 시퀀스 x3
의 다음 요소에 대해 func
작업을 수행하고 반복합니다. 효과는 reduce(f,x1,x2,x3)=f(f(x1,x2),x3)
🎜🎜reduce( )
, 모듈을 functools import Reduce
에서 가져와야 합니다.🎜🎜🎜🎜가지고 놀 밤을 찾을 수 있습니다~~🎜🎜🎜3, filter()🎜🎜filter(func,[sequence])
는 "필터" 함수와 시퀀스를 받습니다. 반환되는 것은 Iterator
반복 가능한 객체입니다. 🎜🎜func
규칙에 따라 시퀀스를 필터링하고 filter()
는 그에 따라 전달된 함수 func
를 적용합니다. . 각 요소는 반환 값 True
또는 False
에 따라 True
의 해당 요소로 유지됩니다. 🎜🎜map()
과 유사하게 filter()
는 반복 가능한 객체를 반환하므로 list() 를 사용하여 얻은 결과를 보고 <code>list
유형을 반환합니다. 🎜🎜🎜🎜예: 목록에서 짝수를 삭제하고 홀수를 유지합니다. 🎜rreee🎜🎜
위 내용은 Python 함수형 프로그래밍에 대한 자세한 분석(코드 예제)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!