PEP 769:在 'attrgetter'、'itemgetter' 和 'getitem' 中添加 'default' 关键字参数

PEP 769:在 'attrgetter'、'itemgetter' 和 'getitem' 中添加 'default' 关键字参数

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

PEP 769 提议在 Python 的 attrgetter、itemgetter 和 getitem 函数中添加默认参数,以便在缺少目标属性或项时返回指定的默认值。这将简化代码,减少异常处理,提高代码清晰度,并与现有功能兼容。

🎯

关键要点

  • PEP 769 提议在 Python 的 attrgetter、itemgetter 和 getitem 函数中添加默认参数。
  • 添加默认参数后,当目标属性或项缺失时,可以返回指定的默认值。
  • 当前的 attrgetter 和 itemgetter 在缺少指定属性或项时会引发异常,增加了错误处理的复杂性。
  • 引入默认参数可以简化处理可选属性或项的代码,提高代码的可读性。
  • 该提案保持了与现有功能的兼容性,未使用默认参数的代码行为不变。
  • 实现 attrgetter 时,可以使用 getattr 并捕获可能的 AttributeError。
  • itemgetter 和 getitem 的实现相对复杂,需要处理 IndexError 和 KeyError。
  • 提案中拒绝了多个默认值的想法,以避免复杂性和潜在混淆。
  • 引入的默认参数是向后兼容的,现有代码不受影响。

延伸问答

PEP 769 的主要内容是什么?

PEP 769 提议在 Python 的 attrgetter、itemgetter 和 getitem 函数中添加默认参数,以便在缺少目标属性或项时返回指定的默认值。

引入默认参数有什么好处?

引入默认参数可以简化处理可选属性或项的代码,减少异常处理,提高代码的可读性。

当前的 attrgetter 和 itemgetter 在缺少属性时会发生什么?

当前的 attrgetter 和 itemgetter 在缺少指定属性或项时会引发异常,增加了错误处理的复杂性。

PEP 769 是否与现有功能兼容?

该提案保持了与现有功能的兼容性,未使用默认参数的代码行为不变。

为什么拒绝了多个默认值的提案?

拒绝多个默认值的提案是因为它会增加复杂性和潜在混淆,导致难以解释和实现。

如何实现 attrgetter 的默认参数?

实现 attrgetter 时,可以使用 getattr 并捕获可能的 AttributeError 来处理默认参数。

➡️

继续阅读