簡體   English   中英

如何在函數式編程中定義函數?

[英]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))

但在這兩種情況下,名稱都很清楚,我建議使用名稱isEvenisOdd (因為你在問:是evenOrOdd嗎?和函數 anwer TrueFalse ,這不是很清楚)

所以

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM