提示:今天介绍一下 Python 中的偏函数(functools.partial)

文章目录

  • 前言

前言

什么是偏函数,偏函数 有什么作用?如果你和我一样,看到这个问题蒙了,那么很有必要往下读一读!

首先,我们需要简单了解下偏函数的作用:和装饰器一样,它可以扩展函数的功能,但又不完成等价于装饰器。通常应用的场景是当我们要频繁调用某个函数时,其中某些参数是已知的固定值,通常我们可以调用这个函数多次,但这样看上去似乎代码有些冗余,而偏函数的出现就是为了很少的解决这一个问题。举一个很简单的例子,比如我就想知道 100 加任意数的和是多少,通常我们的实现方式是这样的:

# 第一种做法:
def add(*args):return sum(args)print(add(1, 2, 3) + 100)
print(add(5, 5, 5) + 100)# 第二种做法
def add(*args):# 对传入的数值相加后,再加上100返回return sum(args) + 100print(add(1, 2, 3))  # 106
print(add(5, 5, 5))  # 115

但两种做法都会存在有问题:第一种,100这个固定值会返回出现,代码总感觉有重复;第二种,就是当我们想要修改 100 这个固定值的时候,我们需要改动 add 这个方法。下面我们来看下用 parital 怎么实现:

from functools import partialdef add(*args):return sum(args)add_100 = partial(add, 100)
print(add_100(1, 2, 3))  # 106add_101 = partial(add, 101)
print(add_101(1, 2, 3))  # 107

我们再来看一下偏函数的定义:

类func = functools.partial(func, *args, **keywords)
func: 需要被扩展的函数,返回的函数其实是一个类 func 的函数
*args: 需要被固定的位置参数
**kwargs: 需要被固定的关键字参数
# 如果在原来的函数 func 中关键字不存在,将会扩展,如果存在,则会覆盖
# 同样是刚刚求和的代码,不同的是加入的关键字参数
def add(*args, **kwargs):# 打印位置参数for n in args:print(n)print("-"*20)# 打印关键字参数for k, v in kwargs.items():print('%s:%s' % (k, v))# 暂不做返回,只看下参数效果,理解 partial 用法# 普通调用
add(1, 2, 3, v1=10, v2=20)
"""
1
2
3
--------------------
v1:10
v2:20
"""# partial
add_partial = partial(add, 10, k1=10, k2=20)
add_partial(1, 2, 3, k3=20)
"""
10
1
2
3
--------------------
k1:10
k2:20
k3:20
"""add_partial(1, 2, 3, k1=20)
"""
10
1
2
3
--------------------
k1:20
k2:20
"""

在神经网络中的应用:

[python]的functools.partial(偏函数)相关推荐

  1. python functools partial,【Python functools.partial 偏函数】

    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. functools.partial可 ...

  2. Python编程:partial偏函数

    使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单. # -*- coding: utf-8 -*-# @File : partial ...

  3. python之functools partial

    from functools import partial def aa(a,b,c):print ('a :',a)print ('b :',b)print ('c :',c)bb=partial( ...

  4. 【Python函数式编程】——偏函数(Partial function)

    Python函数式编程--偏函数   Python的 functools 模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一 ...

  5. python functools.wraps functools.partial实例解析

    一:python functools.wraps 实例 1. 未使用wraps的实例 #!/usr/bin/env python # coding:utf-8def logged(func):def ...

  6. python标准库--functools.partial

    官方相关地址:https://docs.python.org/3.6/library/functools.html 一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数.一般 ...

  7. python中functools的partiaethod_设置functools.partial作为Python中的一个实例方法

    问题是,当你使用实例调用它们时,它们实际上不是绑定方法,也就是说,它们对实例一无所知.绑定方法在调用时自动将self插入基础函数的参数,它存储在绑定方法的__self__属性中.在 因此,重写^{}并 ...

  8. python functools partial_浅谈python标准库--functools.partial

    一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. functools.partial返回的是一个可调用的par ...

  9. python之使用functools.partial

    文章目录 `partial`定义 `partialmethod`定义 partial定义 functools.partial 这个高阶函数用于部分应用一个函数.部分应用是指,基于一个函数创建一个新的可 ...

最新文章

  1. 为什么“ cd”在shell脚本中不起作用?
  2. page_index--template.html(0)源码
  3. python 将counter 的结果转换为字典
  4. drupal安装教程 linux,如何在Fedora Linux上安装Drupal 7
  5. STL6大标准库的关系和作用
  6. Android开发之Android studio4.1查看app布局的方法 | 使用布局检查器和布局验证工具调试布局
  7. 屠呦呦3年后再上热搜:女先生,世无双!
  8. java引用传递_理解Java中的引用传递和值传递
  9. Asp.Net 构架(HttpModule 介绍) - Part.3
  10. go语言os.exit(1)_Go语言os包用法简述
  11. 代码审计系列篇一之代码审计学习思路
  12. 数据结构复习之【线性表】
  13. node+读写文件_python高级:2.文件读写part2
  14. 20191202_Python支持向量机的实现
  15. 关于fat32分区32g限制的问题
  16. php短信报警直到响应,Cacti实现短信报警
  17. 魔方cfop公式软件_【初级篇】(八)最简单的三阶魔方入门教程——顶棱还原...
  18. 如何在vmlogin中设置易路代理yiluproxy?
  19. CIDR地址规划方法
  20. 淘宝新开店铺容易忽略的地方,如何安全提升宝贝排名

热门文章

  1. PIO模式和DMA模式的区别
  2. 1253:抓住那头牛
  3. Centos下如何永久修改系统时间 hwclock
  4. us排名2019计算机专业排名,2019 USNews美国大学计算机专业排名
  5. p3c 插件,是怎么检查出你那屎山的代码?
  6. VMware在线添加磁盘
  7. Spring_AOP(execution表达式)
  8. C语言 7-7 书号判断与纠错
  9. S3C2440 音频解码芯片WM8976声卡驱动移植、测试以及madplay播放mp3文件(三十一)
  10. 将mysql 导出word文档_将数据库的内容生成WORD文档