python 其他常用高阶模块方法
functools.partial(func, /, *args, **keywords)
偏函数, 返回新的部分对象(函数),类似于传入了默认参数一样
from functools import partial
def run(m, n):
return m + n
run2 = partial(run, n=1)
print(run2(m=2))
functools.reduce(function, iterable[, initializer])
将两个参数的 function 从左至右积累地应用到 iterable 的条目,以便将该可迭代对象缩减为单一的值。就是累计迭代对象的值, 可以设置初始值
from functools import reduce
print(reduce(lambda x, y: x + y, range(10)))
functools.wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
常用于装饰器的函数名称及注释等反转
from functools import wraps
def decorator(func):
@wraps(func)
def inner(*args, **kwargs):
print("start")
func(*args, **kwargs)
print("end")
return inner
@decorator
def test():
print("test1")
print("test2")
test()
operator:标准运算符替代函数
operator 模块提供了一套与Python的内置运算符对应的高效率函数
- operator.contains(a, b)、
operator.__contains__(a, b)
返回 b in a 检测的结果。 请注意操作数是反序的。 - operator.countOf(a, b)
返回 b 在 a 中的出现次数。 - operator.indexOf(a, b)¶
返回 b 在 a 中首次出现所在的索引号。 - operator.setitem(a, b, c)`operator.
__setitem__
(a, b, c)
将 a 中索引号为 b 的值设为 c。 - operator.attrgetter(attr)、operator.attrgetter(*attrs)
返回一个可从操作数中获取 attr 的可调用对象。 如果请求了一个以上的属性,则返回一个属性元组。 属性名称还可包含点号。 批量获取对象的属性,例如:- 在 f = attrgetter('name') 之后,调用 f(b) 将返回 b.name。
- 在 f = attrgetter('name', 'date') 之后,调用 f(b) 将返回 (b.name, b.date)。
- 在 f = attrgetter('name.first', 'name.last') 之后,调用 f(b) 将返回 (b.name.first, b.name.last)。
- operator.itemgetter(item)、operator.itemgetter(*items)
返回一个使用操作数的 getitem() 方法从操作数中获取 item 的可调用对象。 如果指定了多个条目,则返回一个查找值的元组。可以取出对象中对应位置的元素 例如:- 在 f = itemgetter(2) 之后,调用 f(r) 将返回 r[2]。
- 在 g = itemgetter(2, 5, 3) 之后,调用 g(r) 将返回 (r[2], r[5], r[3])。
常用实例:
itemgetter(1)('ABCDEFG')
'B'
itemgetter(1, 3, 5)('ABCDEFG')
('B', 'D', 'F')
itemgetter(slice(2, None))('ABCDEFG')
'CDEFG'
soldier = dict(rank='captain', name='dotterbart')
itemgetter('rank')(soldier)
'captain'
使用 itemgetter() 从元组的记录中提取特定字段的例子:
inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
getcount = itemgetter(1)
list(map(getcount, inventory))
[3, 2, 5, 1]
sorted(inventory, key=getcount)
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现