Python “中”的含义&引用;?成员资格测试空字符串文本

Python “中”的含义&引用;?成员资格测试空字符串文本,python,Python,我偶然发现了一段明显可怕的代码: def define_db_name(): 如果您的姓名在“”中: 返回“wallet.dat” 其他: 返回您的姓名 如果“:中的xx是什么意思?如果wallet\u name为空字符串,则该表达式的计算结果是否总是False? 如果代码编写如下,可能会更清楚: if wallet_name == '': 或者只是: if not wallet_name: 如果wallet\u name本身为空,则返回True: >>> foo = '

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

def define_db_name():
如果您的姓名在“”中:
返回“wallet.dat”
其他:
返回您的姓名

如果“:中的xx是什么意思?如果
wallet\u name
为空字符串,则该表达式的计算结果是否总是
False

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

if wallet_name == '':
或者只是:

if not wallet_name:

如果
wallet\u name
本身为空,则返回
True

>>> foo = ''
>>> foo in ''
True
但这是可怕的。如果不是钱包,只需使用
\u name:
即可,或者使用
并取消
如果
语句:

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

这是因为
短路,如果不是空字符串,则返回
wallet\u name
,否则返回
“wallet.dat”

通常在检查数组中是否存在键或列表中是否存在元素时使用
中的

>>> 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

也许他们的意思是同样可怕的
,如果钱包的名字是“
,并且输入了一些偶然的更正确的东西?lol@投票结果接近?@Wooble:那么这个错误是连续两次犯的。请参阅示例函数前面的
确定\u db\u dir
函数。我确实看到
是\u msg\u to \u符号不是-1
秒不是“”
。。我现在会像躲避瘟疫一样避开这个软件包。@MartijnPieters——(开玩笑)至少他们有远见设置
never\u update=False
,所以也许将来的更新会解决它。在我们任何人说出任何意思之前,请阅读以下内容:
如果wallet\u name其他名称,请返回wallet\u name“wallet.dat”
使用
/
作为条件表达式。不是很像蟒蛇。@Ber:在这种情况下是这样的。在这里使用条件表达式是过分的。如果要使用
testexpression和truevalue或false值
,那么条件表达式将是更好的选择(避免使用false-y
truevalue
的问题,但对于简单的
潜在空值或回退值
而言,上述完美且最好的方法是,比更详细的条件表达式
wallet\u name或“wallet.dat”
更具可读性。