python中functools宝库下的partial
admin
2023-07-31 00:38:13
0

看起来好久没更新,再不更新估计手都生锈了。随便写点什么。看看日历,也算是新年第一篇。

说说Python中的一个宝库functools中的一个函数——partial。

partial ,单词的意思是“局部的,部分的”。单看这个词可能有些模糊,但是加上前面的functools,会不会有些明白?那个穿白衣服的同学,你来回答。你说不知道?

先来看下functools的定义:

1 The functools module is for higherorder functions: functions that act on or return other functions. In general, any callable object can be treated as a function for the purposes of this module.

中文大意是:

1 functools这货用于高阶函数:指那些作用于函数或者返回其他函数的函数。通常情况下,只要是可以被当做函数调用的对象就是这个模块的目标。

Note

在python中都有那些东西可以被当做函数来调用呢?

有了上面的定义,应该大体知道, partial 这个东西是针对函数起作用的,并且是部分的,函数中哪些东西可以拆成部分呢?那个白衣服的同学。【小白:类似于装饰器吗。博主:你出去。】

好了,咱们继续,装饰器是对函数进行包装,算是对函数的整体进行处理(其实是对输入和输出)。部分的话其实只有对参数进行部分处理了。怎么部分处理的呢?看个场景就明白了。

场景:有这样的函数:get_useragent(request) 用来获取用户浏览器的ua信息,但是这个函数又不是在主体函数(执行页面渲染的函数)get时调用的,只在模板中的一个filter中调用的(可以理解是在模板渲染时调用的),而filter在执行的时候是不能添加参数的,哪你要怎么处理。

这时partial就得闪亮登场了,代码时间到:

123456 #省略上下文def get(self, request, *args, **kwargs):    context = {        \’ua_filter\’: functools.partial(get_useragent, **{\”request\”: request})    }    self.render(\’index.html\’, context)

12 /* 对应的大致页面代码如下 */useragent: {% ua_filter %}

这样的例子不知道是否够清楚,函数的大致意思就是提前给函数绑定几个参数。

不考虑场景的例子是这样的:

1234567 def say(name, age):    print name, age func = functools.partial(say, age=5)func(\’the5fire\’) # 结果是: the5fire 5

就这样,随便写篇,以示存在。

另外,招聘还在继续,机不可失,时不再来。觉得有潜力,有可培养的同学,以及还没找到可以共同吐槽各类技术的牛人,也可以来试试,这里有人陪你一起吐槽。


相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...