python - Python Interpreter 如何解析包含三元条件运算符的语句?
问题描述
例如,假设 Func1 需要 10 个单位时间返回一个值,而 Func2 需要 5 个单位时间返回一个值。以下哪个语句比另一个语句花费的时间更少或它们花费的时间相同?
声明1:
result = Func1() if (True) else Func2()
声明2:
result = Func2() if not (True) else Func1()
解决方案
在三元条件运算符中,首先要执行的是条件评估。从您的示例中,评估条件与评估相同条件然后否定它之间没有显着差异。
也就是说,在这两种情况下,假设条件为True
,Func1()
将被执行,因此这两个语句将花费相同的时间。
编辑:
证明
这是我所说的证明:
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 个三元条件句等价于你的条件句。最后一个说明何时调用另一个函数
推荐阅读
- django - 指向彼此的外键的CircularDependencyError Django
- bash - 文本文件中的bash循环交换占位符
- python - python中mf4到csv的转换
- php - php ajax 上的无效或意外令牌
- c# - 如何使用buttonclick从文本框中删除过滤器文本
- python - win32截图
- c++ - 我如何解决这个逻辑错误以显示 3d 矢量
- python - 如何在 PYQT initUI 函数中增加变量名?
- android - 在 Azure 管道上构建时无法找到 aar
- java - 如何在 android 中从 webview 打开 Instagram 和其他社交媒体应用程序