我在看源代码一个 Blender 插件的版本,我看到了一个新的语法:
def elem_name_ensure_class(elem, clss=...):
elem_name, elem_class = elem_split_name_class(elem)
if clss is not ...:
assert(elem_class == clss)
return elem_name.decode('utf-8')
是什么意思...
?
...
是 Python 的文字语法Elipsis object:
>>> ...
Ellipsis
它主要由 NumPy 使用;看Python Ellipsis 对象有什么作用?
您找到的代码将其用作sentinel;一种检测是否未指定其他值的方法clss
关键字参数。通常,你会使用None
对于这样的值,但这会取消资格None
其本身永远不会被用作一种价值。
就我个人而言,我不喜欢使用Ellipsis
作为哨兵;我总是会创建一个专门的哨兵:
_sentinel = object()
def elem_name_ensure_class(elem, clss=_sentinel):
elem_name, elem_class = elem_split_name_class(elem)
if clss is not _sentinel:
assert(elem_class == clss)
return elem_name.decode('utf-8')
使用...
订阅之外的符号 (object[...]
) 是 Python 2 中的语法错误,因此使用的技巧将代码限制为 Python 3。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)