簡體   English   中英

Python if():vs if:

[英]Python if( ): vs if:

在Code Academy上的這門課程中,他們展示了示例

def speak(message):
    return message

if happy():
    speak("I'm happy!")
elif sad():
    speak("I'm sad.")
else:
    speak("I don't know what I'm feeling.")

上面的例子將不會涉及到我顯示代碼的其余部分。 那只是if語句的一個例子。 現在,我的印象是,無論何時編寫if語句,它都必須以():結尾():就像上面的示例一樣。

但是,在進行分配時,這將不起作用:

def shut_down(s):
    if s == "yes"():
        return "Shutting down"
    elif s == "no"():
        return "Shutdown aborted"
    else:
        return "Sorry"

但這有效:

def shut_down(s):
    if s == "yes":
        return "Shutting down"
    elif s == "no":
        return "Shutdown aborted"
    else:
        return "Sorry"

我的問題是怎么來的()是不是旁邊的需要"yes""no ”,而是:仍然是必要的。 我認為無論何時編寫if語句,它都必須自動以():結尾。 在第一個示例中,就是這樣顯示的。 你明白我的困惑嗎?

在給出的示例中, happy()sad()是函數,因此需要括號。 if本身不需要最后加括號(並且不應該加括號)

否, if()無關

happy是一種功能。 happy()是對該函數的調用。 因此, if happy():測試happy函數在調用時是否返回true。

換句話說, if happy(): speak("I'm happy!")等效於

result_of_happy = happy()
if result_of_happy:
    speak("I'm happy!")

如前所述, happy() / sad()是函數,因此它們需要() 在問題的示例二中,您將您的值與字符串"yes"進行比較,因為它是不需要()的字符串。

if語句中,可以使用括號使代碼更具可讀性,並確保某些操作先於其他操作進行評估。

if (1+1)*2 == 4:
    print 'here'
else:
    print 'there'

不同於:

if 1+1*2 == 4:
    print 'here'
else:
    print 'there'

因為字符串對象不可調用,所以您期望什么:

然后使用lambda不是那么有效的方法:

def shut_down(s):
    if (lambda: s == "yes")():
        return "Shutting down"
    elif (lambda: s == "no")():
        return "Shutdown aborted"
    else:
        return "Sorry"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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