[英]How to define a function in functional programming?
我正在嘗試學習函數式編程,而且我正在使用 Python。 我正在嘗試做的一個練習是制作一個函數,如果數字為偶數,則返回 true。
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 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
如果要創建顯式函數
def evenOrOdd1(x):
return x%2 ==0
使用 lambda 語句:
evenOrOdd2 = lambda x: x%2 ==0
然后你可以調用 print(evenOrOdd1(1)) print(evenOrOdd2(1))
但在這兩種情況下,名稱都很清楚,我建議使用名稱isEven
或isOdd
(因為你在問:是evenOrOdd
嗎?和函數 anwer 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.