这样给变量赋值被认为是不好的编程风格吗?
x = "foobar" or None
y = some_variable or None
在上面的例子中,变量 x 获得了值 'foobar'。这样给变量赋值被认为是不好的编程风格吗?
x = "foobar" or None
y = some_variable or None
在上面的例子中,变量 x 获得了值 'foobar'。不,这是一种常见的做法。仅对远比您的表达更长的表达形式视为不良风格。
if foo or bar...
),语法就变得自然了,尽管第一次见到时可能需要思考一下。
然而,“假值”在 Python 中也是一个问题,比如 'list = []; return list or False`。 - cjs这样做的主要危险在于(第二种情况下),some_variable
可能是 False 但不是 None(例如整数 0
),在这种情况下,您不想使 y
等于 None。
OP的语法完全没问题。
“assignment with or”的官方名称是null coalescing,现在实际上已经有了维基百科页面!https://en.wikipedia.org/wiki/Null_coalescing_operator
这个问题也许会有用:Is there a Python equivalent of the C# null-coalescing operator?
A = Y if X else Z
Y = X
。例如:A = my_main_dictionary.my_sub_dictionary.my_value if my_main_dictionary.my_sub_dictionary.my_value else None
或者 A = my_main_dictionary.my_sub_dictionary.my_value or None
。 - Roee Gavirelmy_value
分配给一个本地变量即可。 - winklerrr