是否可以使用if语句作为另一个if语句的参数?
如果一个if语句是正确的,那么另一个if语句就是这样,但我不是在谈论嵌套的ifs。就像你有3个if语句一样,
是否有可能说这3个都是真的然后这样做,或者如果所有3个都是假的那么这样做呢?
答案 0 :(得分:4)
这就是逻辑陈述的用途:
if condition1 and condition2 and condition3:
# do something if all three are true
else:
# not all three are true
如果您要测试的元素数量可变,则可以使用all()
:
if all(conditions):
或使用生成器表达式:
if all(val == testvale for val in sequence_of_values):
这些表达式中的任何一个都可以先存储在变量中:
list_of_conditions = [condition1, condition2, condition3]
if some_fourth_condition and all(list_of_conditions):
然后你失去了and
操作数的短路行为;将评估所有3个条件表达式以构建list_of_conditions
,而如果左侧表达式解析为false值,则and
将不会评估右侧表达式。
最后但并非最不重要的是,有conditional expression,它返回基于布尔测试的两个表达式之一的结果:
outcome = true_expression if test_expression else false_expression
并且true_expression
或false_expression
中只有一个会根据test_expression
的结果进行评估。
答案 1 :(得分:2)
我认为你的意思是and
:
if <condition1> and <condition2> and <condition3>:
# All three conditions were True
elif not <condition1> and not <condition2> and not <condition3>:
# All three conditions were False
if all((<condition1>, <condition2>, <condition3>)):
# All three conditions were True
elif not any((<condition1>, <condition2>, <condition3>)):
# All three conditions were False
答案 2 :(得分:0)
也许这对你有用:
x = 1
y = 2
z = 3
my_function(x if x > z else y) # function called with y
x = 4
my_function(x if x > z else y) # function called with x
它当然可以与其他人描述的all()
和any()
结合使用。