我偶然发现了这段显而易见的代码:
def determine_db_name():
if wallet_name in "":
return "wallet.dat"
else:
return wallet_name
Run Code Online (Sandbox Code Playgroud)
这是什么if xx in "":意思?它不总是评估到False?
Mar*_*ers 13
True如果wallet_name它本身是空的,它将返回:
>>> foo = ''
>>> foo in ''
True
Run Code Online (Sandbox Code Playgroud)
虽然这很可怕.只需使用if not wallet_name:,或者完全使用or并废除该if声明:
def determine_db_name():
return wallet_name or "wallet.dat"
Run Code Online (Sandbox Code Playgroud)
这是因为or短路,wallet_name如果它不是空字符串"wallet.dat"则返回,否则返回.
如果wallet_name是空字符串,则表达式为true .
如果代码编写如下,则可能更清楚:
if wallet_name == '':
Run Code Online (Sandbox Code Playgroud)
要不就:
if not wallet_name:
Run Code Online (Sandbox Code Playgroud)