在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.")
以上示例将 NOT 与我显示的其余代码相关联。这只是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
语句时,它都会自动以():
结尾。在第一个例子中,它是如何显示的。你了解我的困惑吗?
答案 0 :(得分:5)
在给出的示例中,happy()
和sad()
是函数,因此需要括号。 if
本身最后不需要括号(它不应该有括号)
答案 1 :(得分:4)
不,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!")
答案 2 :(得分:2)
如上所述,happy() / sad()
是函数,因此它们需要()
。在您的问题的示例二中,您将值与字符串"yes"
进行比较,因为它是一个不需要()
的字符串。
在if
语句中,您可以使用括号使代码更具可读性,并确保在其他操作之前评估某些操作。
if (1+1)*2 == 4:
print 'here'
else:
print 'there'
不同于:
if 1+1*2 == 4:
print 'here'
else:
print 'there'
答案 3 :(得分:0)
因为字符串对象不可调用,所以您期望什么:
然后使用lambda
效率不高:
def shut_down(s):
if (lambda: s == "yes")():
return "Shutting down"
elif (lambda: s == "no")():
return "Shutdown aborted"
else:
return "Sorry"