Python 如果条件为或,则返回计算结果为FALSE的变量

Python 如果条件为或,则返回计算结果为FALSE的变量,python,Python,我想知道在计算结果为FALSE(或TRUE)的if-else中返回变量的最简单(也是最短)的方法 利用或操作员短路: def foo(a, b): if a == 0 or b == 0: return a or b 如果a为0,则返回b。请注意,如果a和b都是0,则返回0 如果您确实希望这些值是布尔值,那么请使用Pythonbool类型值、False和True: def foo(a, b): if not (a and b): # equivalent of

我想知道在计算结果为
FALSE
(或
TRUE
)的
if-else
中返回变量的最简单(也是最短)的方法


利用
操作员短路:

def foo(a, b):
    if a == 0 or b == 0:
       return a or b
如果
a
0
,则返回
b
。请注意,如果
a
b
都是
0
,则返回
0

如果您确实希望这些值是布尔值,那么请使用Python
bool
类型值、
False
True

def foo(a, b):
    if not (a and b):  # equivalent of "not a or not b"
        return a or b

foo(False, True)  # produces True
foo(True, True)  # produces None

利用
操作员短路:

def foo(a, b):
    if a == 0 or b == 0:
       return a or b
如果
a
0
,则返回
b
。请注意,如果
a
b
都是
0
,则返回
0

如果您确实希望这些值是布尔值,那么请使用Python
bool
类型值、
False
True

def foo(a, b):
    if not (a and b):  # equivalent of "not a or not b"
        return a or b

foo(False, True)  # produces True
foo(True, True)  # produces None

也许我误解了这个问题,但这不是我试图这样做的原因吗:

a = None
b = 123

c = a or b
print(c)
> 123
这是一种模式,用于在未设置非强制参数的情况下初始化具有默认值的函数的参数:

def func(a, b=None):
    b = b or 'default_value'
    print(a, b)

func('abc', 'b defined')
func('cde')

也许我误解了这个问题,但这不是我试图这样做的原因吗:

a = None
b = 123

c = a or b
print(c)
> 123
这是一种模式,用于在未设置非强制参数的情况下初始化具有默认值的函数的参数:

def func(a, b=None):
    b = b or 'default_value'
    print(a, b)

func('abc', 'b defined')
func('cde')

else:pass
是多余的。你不必包含一个
else
。如果
a
b
都是
0
,该怎么办?@MartijnPieters其实并不重要,因为我当时对值不感兴趣。我只是想知道是否有一种方法可以获取其中一个值,如果一个值被求值为
FALSE
。当然,我可以简单地写一个更长的
,如果不是这样的话,但我认为可能会有更短的方法:)接下来,你是说
a
b
被视为布尔值吗?然后使用
False
而不是
0
True
而不是
1
@MartijnPieters no,作为数字:)但是我看到你的困惑
否则:pass
是多余的。你不必包含一个
else
。如果
a
b
都是
0
,该怎么办?@MartijnPieters其实并不重要,因为我当时对值不感兴趣。我只是想知道是否有一种方法可以获取其中一个值,如果一个值被求值为
FALSE
。当然,我可以简单地写一个更长的
,如果不是这样的话,但我认为可能会有更短的方法:)接下来,你是说
a
b
被视为布尔值吗?然后用
False
代替
0
True
代替
1
@MartijnPieters不,作为数字:)但是我看到了你的困惑,我正在寻找!谢谢你会怎么做呢?获取计算结果为
TRUE
的变量?所以
0
?@Chrissl:
a和b
如果为false(设置为
0
),则返回
a
,否则返回
b
。我正在寻找它!谢谢你会怎么做呢?获取计算结果为
TRUE
的变量?所以
0
?@Chrissl:
a和b
如果为false(设置为
0
),则返回
a
,否则返回
b