蟒蛇 || 备份语句

Art*_*pek 6 python variables

在 Javascript 中,我可以像这样分配一个值:

var i = p || 4

显然,如果 p 未定义,它将求助于 4。在 Python 中是否有比try:/except:组合更优雅的此操作版本?

try:
    i = p
except:
    i = 4
Run Code Online (Sandbox Code Playgroud)

Ray*_*ger 6

人们有时会为此目的使用 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 有所不同。