如何在函数式编程中定义函数?
How to define a function in functional programming?
我正在尝试学习函数式编程,我正在学习 Python。我正在尝试做的一个练习是制作一个函数,如果数字是偶数,则 returns 为真。
def evenOrOdd(x):
return lambda x: x%2 == 0
print(evenOrOdd(1))
print(evenOrOdd(2))
print(evenOrOdd(3))
print(evenOrOdd(4))
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
这就是我目前所拥有的,但如您所见,它没有返回布尔值。
如果要创建显式函数
def evenOrOdd1(x):
return x%2 ==0
使用 lambda 语句:
evenOrOdd2 = lambda x: x%2 ==0
然后你可以打电话给
打印(偶数或奇数 1(1))
打印(evenOrOdd2(1))
但在这两种情况下名称都很清楚,我建议使用 as names
isEven
或isOdd
(因为你问的是:是evenOrOdd
吗?函数回答True
或False
,不是很清楚)
所以
isEven = lambda x: not x%2
isOdd = lambda x: x%2
#你只需要定义一个就可以了
if isEven(x):
doSomething
if not isEven(): #then it's Odd
doSomethingElse
你要么这样做:(声明一个正常的函数)
def evenOrOdd(x):
return x%2 == 0
或者这样:(使用 lambda 声明一个函数)
evenOrOdd = lambda x: x%2 == 0
这个
def evenOrOdd(x):
return lambda x: x%2 == 0
表示您从函数 evenOrOdd
返回一个 lambda 函数。在这种情况下,变量 x 没有实际区别,因为 lambda 重新定义了它。你可以这样称呼它:
evenOrOdd(999)(2) #999 could be anything
我正在尝试学习函数式编程,我正在学习 Python。我正在尝试做的一个练习是制作一个函数,如果数字是偶数,则 returns 为真。
def evenOrOdd(x):
return lambda x: x%2 == 0
print(evenOrOdd(1))
print(evenOrOdd(2))
print(evenOrOdd(3))
print(evenOrOdd(4))
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
<function evenOrOdd.<locals>.<lambda> at 0x7f7a9a145670>
这就是我目前所拥有的,但如您所见,它没有返回布尔值。
如果要创建显式函数
def evenOrOdd1(x):
return x%2 ==0
使用 lambda 语句:
evenOrOdd2 = lambda x: x%2 ==0
然后你可以打电话给 打印(偶数或奇数 1(1)) 打印(evenOrOdd2(1))
但在这两种情况下名称都很清楚,我建议使用 as names
isEven
或isOdd
(因为你问的是:是evenOrOdd
吗?函数回答True
或False
,不是很清楚)
所以
isEven = lambda x: not x%2
isOdd = lambda x: x%2
#你只需要定义一个就可以了
if isEven(x):
doSomething
if not isEven(): #then it's Odd
doSomethingElse
你要么这样做:(声明一个正常的函数)
def evenOrOdd(x):
return x%2 == 0
或者这样:(使用 lambda 声明一个函数)
evenOrOdd = lambda x: x%2 == 0
这个
def evenOrOdd(x):
return lambda x: x%2 == 0
表示您从函数 evenOrOdd
返回一个 lambda 函数。在这种情况下,变量 x 没有实际区别,因为 lambda 重新定义了它。你可以这样称呼它:
evenOrOdd(999)(2) #999 could be anything