處理 ls() 結果
使用 ls()
作為過濾器有時可以產生奇數結果。如果你不小心忘記傳遞過濾器引數並呼叫沒有引數的 ls()
,你將獲得 Maya 場景中每個節點的列表 :
cmds.ls()
# [u'time1', u'sequenceManager1', u'hardwareRenderingGlobals', u'renderPartition'...] etc
一個常見的原因是在 ls()
中使用* args:
cmds.ls(["fred", "barney"]) # OK, returns ['fred', 'barney']
cmds.ls([]) # OK, returns []
cmds.ls(*[]) # not ok: returns all nodes!
Maya 2015 及更早版本
在 Maya 2015 及更早版本中,找不到任何內容的 ls()
查詢將返回 None
而不是空列表。如果使用結果,可能會導致異常:
for item in cmds.ls("don't_exist"):
print item
# Error: TypeError: file <maya console> line 1: 'NoneType' object is not iterable
解決這個問題最乾淨的習慣用法是在 ls()
操作後新增 or []
時返回 None 時新增替代輸出。這將確保返回是一個空列表而不是 None
:
for item in cmds.ls("don't_exist") or []:
print item
# prints nothing since there's no result -- but no exception