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中文网其他相关文章!