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