有没有办法使用if语句作为参数?

时间:2013-12-01 16:13:29

标签: python if-statement

是否可以使用if语句作为另一个if语句的参数?

如果一个if语句是正确的,那么另一个if语句就是这样,但我不是在谈论嵌套的ifs。就像你有3个if语句一样,

是否有可能说这3个都是真的然后这样做,或者如果所有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_expressionfalse_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

当然,您也可以使用allany

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()结合使用。