今天,我们来挑战一下自己,用 Python 代码实现内置函数 max
的功能。这道题看似简单,但要完整实现其所有特性,并考虑到各种边界情况和性能优化,还是比较考验基本功的。
理论篇:max
函数的功能剖析
Python 内置的 max
函数功能非常强大,它可以:
- 找出可迭代对象中的最大值: 可以是列表、元组、集合、字符串、生成器等。
- 找出多个参数中的最大值: 可以传入两个或多个参数。
- 通过
key
参数指定比较函数: 可以自定义比较规则,例如按字符串长度、对象的某个属性等比较。 - 通过
default
参数指定默认值: 当可迭代对象为空时,返回指定的默认值,防止抛出ValueError
。
代码篇:逐步实现 my_max
函数
下面我们逐步实现一个名为 my_max
的函数,来尽可能完美地模拟 max
的功能:
def my_max(*args, key=None, default=None):
"""
模拟 Python 内置的 max 函数。
:param *args: 可迭代对象或多个参数。
:param key: 用于比较的函数。
:param default: 当可迭代对象为空时的默认值。
:return: 最大值。
:raises TypeError: 当参数类型错误时抛出异常。
:raises ValueError: 当可迭代对象为空且没有 default 值时抛出异常。
"""
if not args: # 没有传入任何参数
if