编程基础内容 - 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-11-26MATLAB 中 A(7)=[];什么意思?-icode9专业技术文章分享
- 2024-11-26UniApp 中如何实现使用输入法时保持页面列表不动的效果?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中怎么实现输入法弹出时禁止页面向上滚动?-icode9专业技术文章分享
- 2024-11-26WebSocket是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-26页面有多个ref 要动态传入怎么实现?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中实现一个底部输入框的常见方法有哪些?-icode9专业技术文章分享
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版