functools模块中partial的使用
一.简介
functools.partial(func,* args,**关键字)
返回一个新的部分对象,当被调用时,其行为类似于使用位置参数args 和关键字参数关键字调用的func。如果为调用提供了更多参数,则将它们附加到args。如果提供了其他关键字参数,则它们会扩展和覆盖关键字。
简单说就是把一个函数,和该函数所需传的参数封装到一个class 'functools.partial'的类中,简化以后的调用方式
#官方实例
from functools import partial # 将一个二进制的字符串传承int数字类型
basetwo = partial(int, base=2)
basetwo.__doc__ = 'Convert base 2 string to an int.'
print(basetwo('')) #
print(basetwo('')) #
二.其他实例
# 获取百度的html内容
import requests def get_baidu(method, url):
response = requests.request(method=method, url=url)
return response.content res = get_baidu("get", "https://www.baidu.com")
print(res) # 将函数和参数封装到一个指定变量名中,下次执行直接调用加()
getBaidu = partial(get_baidu, "get", "https://www.baidu.com")
print(type(getBaidu))
res = getBaidu()
#定义一个加减乘除的类
class Calculate(object):
md=["add","minus","multiplication","division"]
def __init__(self,method,num1=0, num2=0):
self.num1 = num1
self.num2 = num2
if method in self.md:
func=getattr(Calculate,method)
self.result=func(self) def add(self):
return self.num1 + self.num2 def minus(self):
return self.num1 - self.num2 def multiplication(self):
return self.num1 * self.num2 def division(self):
return self.num1 / self.num2 add=partial(Calculate,"add")
minus=partial(Calculate,"minus")
multiplication=partial(Calculate,"multiplication")
division=partial(Calculate,"division")
#调用刚刚写好的类的py文件
from functool_learn import functool_employ res=functool_employ.add(3, 5)
print(res.result)
res=functool_employ.minus(3, 5)
print(res.result)
res=functool_employ.multiplication(3, 5)
print(res.result)
res=functool_employ.division(3, 5)
print(res.result)
functools模块中partial的使用的更多相关文章
- Python使用functools模块中的partial函数生成偏函数
所谓偏函数即是规定了固定参数的函数,在函数式编程中我们经常可以用到,这里我们就来看一下Python使用functools模块中的partial函数生成偏函数的方法 python 中提供一种用于对函数固 ...
- functools模块中的函数
Python自带的functools模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数.换言之,就是能使用该模块对可调用对象进行处理.functools模块函数概览functools.cm ...
- python的collections模块和functools模块
collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> ...
- python 中的匿名函数lamda和functools模块
为什么 要把匿名函数和functools模块写在一起? 因为 lamda函数和functools模块都是对函数一种增强或者是简化. 匿名函数: 为了解决那些功能很简单的需求而设计一次性的需求函数 #& ...
- 类装饰器,元类,垃圾回收GC,内建属性、内建方法,集合,functools模块,常见模块
'''''''''类装饰器'''class Test(): def __init__(self,func): print('---初始化---') print('func name is %s'%fu ...
- 探究functools模块wraps装饰器的用途
<A Byte of Python>17.8节讲decorator的时候,用到了functools模块中的一个装饰器:wraps.因为之前没有接触过这个装饰器,所以特地研究了一下. 何谓“ ...
- Python标准库笔记(9) — functools模块
functools 作用于函数的函数 functools 模块提供用于调整或扩展函数和其他可调用对象的工具,而无需完全重写它们. 装饰器 partial 类是 functools 模块提供的主要工具, ...
- python中 functools模块 闭包的两个好朋友partial偏函数和wraps包裹
前一段时间学习了python当中的装饰器,主要利用了闭包的原理.后来呢,又见到了python当中的functools模块,里面有很多实用的功能.今天我想分享一下跟装饰器息息相关的两个函数partial ...
- python中的functools模块
functools模块可以作用于所有的可以被调用的对象,包括函数 定义了__call__方法的类等 1 functools.cmp_to_key(func) 将比较函数(接受两个参数,通过比较两个参数 ...
随机推荐
- web前端图片上传(3)--filereader
这篇文章主要是为了介绍一种文件上传的方式.当然文件中是包含图片的.如果大家仔细看我的第一篇web前端图片上传(1)就会知道,其实也是按照这种方式上传你的,但是由于上次时间比较紧张,没有详细的介绍今天的 ...
- flex 圣杯布局
基本思路 圣杯布局分为3段:上.中.下. 中段被分为:左.中.右3块. 1:采用flex布局时,先把弹性容器主轴设置为垂直方向(flex-direction:column) 2:上.中.下3块弹性项 ...
- Python数据挖掘
Python之所以如此流行,原因在于它的数据分析和挖掘方面表现出的高性能,而我们前面介绍的Python大都集中在各个子功能(如科学计算.矢量计算.可视化等),其目的在于引出最终的数据分析和数据挖掘功能 ...
- app.config的坑
C# C/S程序一般通过ConfigurationManager类来读取app.config,其中有个坑爹的地方是ConfigurationManager类自带缓存,就如Windows服务来说,除非重 ...
- ubuntu18.04修改网卡名称为eth0
1.修改grub文件 vim /etc/default/grub 查找 GRUB_CMDLINE_LINUX="" 修改为 GRUB_CMDLINE_LINUX="net ...
- 光盘安装win7系统教程
光盘安装系统是最传统的安装系统的方法,虽然现在U盘安装和硬盘安装已经很方便,但仍有很多用户习惯光盘安装的方式,下面小编教大家如何利用光盘安装系统. 来源:https://www.haoxitongx. ...
- [RHEL 7]ISCSI服务端及客户端连接配置
环境RHEL7.4 1.搭建服务器端主机环境 网络配置 网卡eth0 10.0.0.1 网卡eth1 10.1.0.1 网卡eth2 10.2.0.1 网卡eth3 10.3.0.1 硬盘配置 添加一 ...
- 003_python中key为中文的处理
由于统计域名资产信息时,部门名称是中文的,但是还需要用这个部门名称进行字符的匹配运算,但不进行转换处理的话,它会报以下的错误: 解决方法如下: # -*- coding: utf-8 -*- all_ ...
- 毕业设计(4):基于MicroPython的超声波倒车雷达系统
前言 倒车雷达是汽车驻车或者倒车时的安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员驻车.倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊 ...
- [Alpha阶段]第九次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第九次Scrum Meeting 基本信息 名称 时间 地点 时长 第九次Scrum Meeting 19/04/14 大运村寝室6楼 30min ...