Python if( ): vs if:
在代码学院有一个课程,在这个例子中他们展示了
1 2 3 4 5 6 7 8 9 | 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.") |
上面的示例与我显示的其他代码无关。这只是
但是,在执行任务时,这不起作用:
1 2 3 4 5 6 7 | def shut_down(s): if s =="yes"(): return"Shutting down" elif s =="no"(): return"Shutdown aborted" else: return"Sorry" |
然而,这是可行的:
1 2 3 4 5 6 7 | def shut_down(s): if s =="yes": return"Shutting down" elif s =="no": return"Shutdown aborted" else: return"Sorry" |
我的问题是,为什么
在给出的示例中,
不,
换句话说,
1 2 3 | result_of_happy = happy() if result_of_happy: speak("I'm happy!") |
如前所述,
在
1 2 3 4 | if (1+1)*2 == 4: print 'here' else: print 'there' |
不同于:
1 2 3 4 | if 1+1*2 == 4: print 'here' else: print 'there' |
因为字符串对象不可调用,所以您期望的是:
然后使用
1 2 3 4 5 6 7 | def shut_down(s): if (lambda: s =="yes")(): return"Shutting down" elif (lambda: s =="no")(): return"Shutdown aborted" else: return"Sorry" |