专栏首页Python程序员杂谈python 中 functools 宝库下的 partial

python 中 functools 宝库下的 partial

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

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

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

先来看下functools的定义:

The functools module is for higher-order 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.

中文大意是:

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

Note

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

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

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

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

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

#省略上下文defget(self,request,*args,**kwargs):context={'ua_filter':functools.partial(get_useragent,**{"request":request})}self.render('index.html',context)
/* 对应的大致页面代码如下 */
user-agent: {% ua_filter %}

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

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

defsay(name,age):printname,agefunc=functools.partial(say,age=5)func('the5fire')# 结果是: the5fire 5

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux和windows简单文件共享软件FileShareTool

    前段时间做完python书中的那几个项目之后,想就这那个P2P共享的东西,发挥一下。于是就断断续续的加了个界面上去,用的是wxpython库。

    the5fire
  • [译]精通JavaScript面试之什么是函数式编程?

    在JavaScript的世界中函数式编程已然变成热门的话题了。仅仅在几年之前,极少数的JavaScript程序员听说过函数式编程是什么,但是在过去三年里我看到的...

    the5fire
  • CentOS7 上安装 Shadowsocks 命令列表

    the5fire
  • YOLOV3损失函数再思考 Plus

    看到这个题目想必大家都猜到了,昨天的文章又有问题了。。。今天,又和两位大佬交流了一下YOLOV3损失函数,然后重新再对源码进行了梯度推导我最终发现,我的理解竟然...

    BBuf
  • Web 性能优化:理解及使用 JavaScript 缓存

    随着我们的应用程序的不断增长并开始进行复杂的计算时,对速度的需求越来越高(?),所以流程的优化变得必不可少。 当我们忽略这个问题时,我们最终的程序需要花费大量时...

    前端小智@大迁世界
  • 分析重装系统也无法清除的鬼影病毒

    声明:本文由【MS509 Team】成员expsky原创,仅用于技术交流分享,禁止将相关技术应用到不当途径。 整理电脑的时候找到自已以前分析的一个鬼影病毒的资料...

    FB客服
  • 人工智能可从婴儿大脑图像中发现自闭症征兆

    美国科研人员利用人工智能算法对188名3至9个月大的婴儿的大脑图像进行分析,发现了其中的自闭症征兆。

    人工智能快报
  • R&Python Data Science 系列:数据处理(2)

    承接R&Python Data Science 系列:数据处理(1)继续介绍剩余的函数。

    1480
  • Facebook悄悄收购了一家AI初创公司,致力于论文和代码的免费开放

    Facebook一直致力于计算机视觉、自然语言处理和深度学习等领域的人工智能探索,并不遗余力地收购相关初创公司壮大自己。

    大数据文摘
  • Java命令模式(Command)

      将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作,将”发出请求的对象”和”接收与执行这些请求的对象”...

    用户4919348

扫码关注云+社区

领取腾讯云代金券