首页 > 解决方案 > Python Interpreter 如何解析包含三元条件运算符的语句?

问题描述

例如,假设 Func1 需要 10 个单位时间返回一个值,而 Func2 需要 5 个单位时间返回一个值。以下哪个语句比另一个语句花费的时间更少或它们花费的时间相同?

声明1:

result = Func1() if (True) else Func2()

声明2:

result = Func2() if not (True) else Func1()

标签: pythonsyntaxinterpreterternary-operator

解决方案


在三元条件运算符中,首先要执行的是条件评估。从您的示例中,评估条件与评估相同条件然后否定它之间没有显着差异。

也就是说,在这两种情况下,假设条件为TrueFunc1()将被执行,因此这两个语句将花费相同的时间。

编辑:

证明

这是我所说的证明:

from time import sleep

def sleep5():
    print("Sleeping for 5 secs")
    sleep(5)

def sleep1():
    print("Sleeping for 1 sec")
    sleep(1)

def true_condition():
    print("Evaluating condition")
    return True

sleep1() if true_condition() else sleep5() 
'''prints:
Evaluating condition
Sleeping for 1 sec
then waits for 1 second'''

sleep5() if not true_condition() else sleep1() 
'''prints:
Evaluating condition
Sleeping for 1 sec
then waits for 1 second'''

sleep1() if not true_condition() else sleep5() 
'''prints:
Evaluating condition
Sleeping for 5 secs
then waits for 5 seconds'''

前 2 个三元条件句等价于你的条件句。最后一个说明何时调用另一个函数


推荐阅读