编程基础内容 - 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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享