0

使用或运算符初始化的正确方法是什么?这就是我正在尝试做的事情:

a = 7
b = 4

c = a or b

if (c > 5):
    print(c)

但它似乎只选择 a 的值。这就是我尝试应用上述内容的方式:

ref = overall.dbs.reference('mycharacter')

first = ref.order_by_child('name')
first.start_at(sub_category)
first.end_at( sub_category + "\uf8ff").get()

second = ref.order_by_child('name')
second.start_at(sub_category.capitalize())
second.end_at(sub_category.capitalize() + "\uf8ff").get()

snapshot = first or second

在这里,我试图对快照执行一个操作,如果 sub_category 的第一个字母是一个提供大写或不大写的变量,则该操作可能返回 null ......试图解决 Firebase 的 orderby() 区分大小写的问题。

4

1 回答 1

0

当您使用这样的or运算符初始化变量时c = a or b,Python 将评估表达式右侧的部分,寻找“真”或“假”值。首先,它评估a. 如果a是一个真值,那么c将接收 的值a,而 Python 不会评估 的值b。如果a是一个假值,那么c将接收b(表达式的最后一部分)的值。

Python 中的虚假值取决于上下文。对于集合,任何为空的都被认为是假值([], (), {})。对于数字,任何数字类型的零都被认为是虚假的。None并且False也被认为是虚假值。

真实的价值观是不虚假的一切:)。所以,为了简短起见,如果你有这样的事情:

a = b or c or d or e or f

Python 将计算表达式右侧的每一部分(从左到右),直到找到要返回的真值,或者表达式的最后一部分,以防表达式的所有前面部分都被计算为false,如下面的例子。

>>> a = 0
>>> b = []
>>> c = False
>>> d = a or b or c
>>> print(d)

Output:
False

由于表达式右侧的所有部分都是假值,d因此将接收表达式最后部分的值。

于 2020-11-25T04:56:09.623 回答