编程基础内容 - functools.partial
2021/9/14 20:05:13
本文主要是介绍编程基础内容 - functools.partial,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
functools.partial 固定函数的一些形参值
from functools import partial
RECORD_SIZE = 32 with open('./data/files.data', 'rb') as f: records = iter(partial(f.read, RECORD_SIZE), b'') for r in records: print(r)
b'1 2 3 4 5 6 7 8 9 10 11 12 13 14' b' 15 16 17 18 19 20 21 22 23 24 2' b'5 26 27 28 29 30 31'
records 对象是一个可迭代对象,它会不断的产生固定大小的数据块,直到文件末尾。 要注意的是如果总记录大小不是块大小的整数倍的话,最后一个返回元素的字节数会比期望值少。
本例中目的是读取固定长度数据,并一行一行迭代读取。
functools.partial 用来创建一个每次被调用时从文件中读取固定数目字节的可调用对象。 标记值 b’’ 就是当到达文件结尾时的返回值。
def add(a, b)->int: return a + b add_100 = partial(add, a = 100) # 固定形参a add_100(b = 10) # -> 110
110
add的例子展示了partial可以固定函数add中的任意形参的值
给函数内的函数传字典参数
class Add: def __init__(self, a, b): self.a = a self.b = b def get_values(self): return self.a + self.b class Sub: def __init__(self, a, b): self.a = a self.b = b def get_values(self): return self.a - self.b # 对拥有相同形参的对象进行统一实例化,即传入 def func(i, param=None)->int: """集中有序实例化对象""" default_param = { 'a' : 10, 'b' : 100 } if param: default_param.update(param) ops = [ partial( Add, **param ), partial( Sub, **param ) ] assert i < len(ops) return ops[i]() ## 测试函数 func d = {'a': 10, 'b':100} add_ab = func(0, d) add_ab.get_values()
110
type(add_ab)
__main__.Add
优势:直接将字典转化为对应的变量和值,key为变量名,value为变量取值
这篇关于编程基础内容 - functools.partial的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework
- 2025-01-03如果 Azure-Samples/aks-store-demo 使用了 Score 会怎样?
- 2025-01-03Apache Flink概述:实时数据处理的利器