Python if():vs if:

时间:2015-07-29 20:03:45

标签: python function if-statement

在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语句时,它都会自动以():结尾。在第一个例子中,它是如何显示的。你了解我的困惑吗?

4 个答案:

答案 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"