“中的”的含义?成员资格测试空字符串文本

2024-06-07 14:02:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我偶然发现了this一段明显可怕的代码:

def determine_db_name():
    if wallet_name in "":
        return "wallet.dat"
    else:
        return wallet_name

什么是if xx in "":的意思?它的计算结果不是总是False


Tags: 代码nameinfalsedbreturnifdef
3条回答

通常in用于检查数组中是否存在键或列表中是否存在元素

>>> 2 in [1,2,3]
True
>>> 6 in [1,2,3]
False
>>> 'foo' in {'bar', 'foo', 'baz'}
True

但它也适用于字符串:

>>> 'foo' in 'barfoobar'
True
>>> 'foo' in 'barbarbar'
False

如果wallet_name是空字符串,则该表达式为真

如果代码编写如下,可能会更清楚:

if wallet_name == '':

或者只是:

if not wallet_name:

如果wallet_name本身为空,它将返回True

>>> foo = ''
>>> foo in ''
True

这是可怕的。只需使用if not wallet_name:,或者使用or并完全删除if语句:

def determine_db_name():
    return wallet_name or "wallet.dat"

这是因为or短路,如果不是空字符串,则返回wallet_name,否则返回"wallet.dat"

相关问题 更多 >

    热门问题