在 Javascript 中,我可以像这样分配一个值:
var i = p || 4
显然,如果 p 未定义,它将求助于 4。在 Python 中是否有比try:/except:组合更优雅的此操作版本?
try:
i = p
except:
i = 4
Run Code Online (Sandbox Code Playgroud)
人们有时会为此目的使用 Python 的or 运算符:
def f(p=None):
i = p or 4
...
Run Code Online (Sandbox Code Playgroud)
依赖于 or 运算符的“Python 独有”方面来返回使表达式为真的值(而不仅仅是返回 True 或 False)。
另一个提供更大灵活性的选项是使用条件表达式:
def f(p=None):
i = p if p is not None else 4
...
Run Code Online (Sandbox Code Playgroud)
如果您只想检查变量是否已定义,try/except 是最干净的方法:
try:
i = p
except NameError:
pass
Run Code Online (Sandbox Code Playgroud)
话虽如此,这对于 Python 来说是不典型的,并且可能暗示程序设计存在问题。
最好将变量简单地初始化为占位符值,例如None。在这方面,Python 的风格与 Javascript 有所不同。