Python 中的偏函数(partial)
functools.partial 的作用是什么?如何用它固定函数的某些参数?请举例说明。
回答
小字辈
partial 用于固定函数的某些参数,返回一个可调用对象,简化重复调用。
from functools import partial
def power(base, exp):
return base ** exp
# 固定第二个参数
square = partial(power, exp=2)
cube = partial(power, exp=3)
print(square(5)) # 25
print(cube(5)) # 125
# 固定第一个参数
def greet(greeting, name):
return f'{greeting}, {name}!'
say_hello = partial(greet, 'Hello')
say_goodbye = partial(greet, 'Goodbye')
print(say_hello('Alice')) # Hello, Alice!
print(say_goodbye('Bob')) # Goodbye, Bob!
# 实际应用:简化 sorted 的 key
sort_by_age = partial(sorted, key=lambda x: x[1])
sort_by_age([('Alice', 25), ('Bob', 20)])
partial 的 func 和 args 属性可访问原始信息。