Python 3 對巢狀參數的語法和行為都進行了重大更改。在 Python 2 中,可以使用函數定義和 lambda 表達式中的元組解包來定義巢狀參數。然而,由於擔心混亂和複雜性,此功能在 Python 3 中被刪除。
嘗試將使用巢狀參數的 Python 2 程式碼編譯到 Python 3 模組中時,可能會出現類似於所提供上下文中提到的錯誤。若要將程式碼成功移植到Python 3,應遵循以下準則:
函數定義:
將元組解包語法取代為單一參數並手動解包元群組在函數體內:
<code class="python">def add(self, sub_pred_obj): sub, pred, obj = sub_pred_obj # Remaining function body</code>
Lambda 表達式:
避免元組解包並使用索引來存取lambda 中的各個元素:
<code class="python">lambda xy: (xy[1], xy[0])</code>
使用轉換工具:
對於複雜的函數,2to3、modernize 或futurize 等轉換工具可以自動識別並建議這些更改。
PEP 3113 解釋了刪除元組參數解包背後的原因。它指出了它可能會令人困惑,並導致在許多上下文中實現實現困難,例如閉包、調試和其他語言功能。
雖然元組參數解包不再是Python 3 直接支持,還有其他解決方案可以實現類似的功能:
以上是刪除元組解包後,如何處理 Python 3 中的巢狀參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!