處理 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