python学习之旅(十五)
Python基础知识(14):函数(Ⅴ)
一、装饰器
decorator:本质上就是函数,可以增强函数的功能。
定义起来虽然有点复杂,但使用起来非常灵活和方便
1、不修改被装饰函数的源代码
2、不修改被装饰函数的调用方式
3、装饰函数对被装饰函数透明
import functools
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator @log('execute')
def now():
print('2015-3-25') 结果:
now()
execute now():
2015-3-25
二、偏函数
functools.partial:把一个函数的某些参数给固定住(即设置默认值),返回一个新的函数,调用这个新函数会更简单
#int函数使用参数base=?,把字符串中的进制数按照对应的进制转成十进制数,默认按照十进制数进行转换
int("")
30 int("",base=2)
10 int("",base=8)
10 int("",base=10)
30 int("",base=16)
48
使用functools.partial
创建一个偏函数用来把二进制数转换成十进制数
import functools
int2=functools.partial(int,base=2)
int2("")
2
当函数的参数个数太多,需要简化时,使用functools.partial
可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单
资料来源:
廖雪峰官网:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000
python学习之旅(十五)的更多相关文章
- Python学习笔记(十五):类基础
以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...
- Python学习笔记第二十五周(Django补充)
1.render_to_reponse() 不同于render,render_to_response()不用包含request,直接写template中文件 2.locals() 如果views文件中 ...
- Python学习札记(二十五) 函数式编程6 匿名函数
参考:匿名函数 NOTE 1.Python对匿名函数提供了有限的支持. eg. #!/usr/bin/env python3 def main(): lis = list(map(lambda x: ...
- python学习笔记-(十五)RabbitMQ队列
rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或者同属于同一父进程下的 ...
- Python学习(三十五)—— Django之ORM训练专题
图书管理系统 一.表结构设计 # 书 class Book(models.Model): title = models.CharField(max_length=32) publish_date = ...
- 老男孩python学习自修第十五天【常用模块之time】
例如: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import time if __name__ == "__main__": pr ...
- Python学习(二十五)—— Python连接MySql数据库
转载自http://www.cnblogs.com/liwenzhou/p/8032238.html 一.Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MyS ...
- python学习之旅(五)
Python基础知识(4):基础数据类型之字符串(Ⅰ) 字符串是 Python 中最常用的数据类型.可以使用引号“ ”来创建字符串,只要为变量分配一个值即可.例如: name=“Alice” 注:字符 ...
- Python学习笔记第十五周
目录: 一.CSS补充 1.position 2.overflow 3.hover 4.background 二.JavaScript 三.DOM 主要内容: 一.CSS补充 1.position 可 ...
- Python学习札记(三十五) 面向对象编程 Object Oriented Program 6
参考:实例属性和类属性 NOTE Python是动态语言,根据类创建的实例可以任意绑定属性. class Student(object): def __init__(self, name): self ...
随机推荐
- tmunx error:invalid option: status-utf8 invalid option: utf8
修改为:set-window-option -gq mouse off set-window-option -gq mode-mouse off set-option -gq status-utf8 ...
- 时间mysql
查询一天/今天: select * from table where to_days(column_time) = to_days(now()) select * from table where d ...
- OpenCV 学习笔记 07 支持向量机SVM(flag)
1 SVM 基本概念 本章节主要从文字层面来概括性理解 SVM. 支持向量机(support vector machine,简SVM)是二类分类模型. 在机器学习中,它在分类与回归分析中分析数据的监督 ...
- Java之JavaWeb项目开发开始准备
操作系统:Mac OS 10.11.6 Tomcat版本:9.0.0.M17 前言:部署Tomcat可以参考我一年前做的笔记:<在MAC下搭建JSP开发环境>,也可以参考大神写的挺好的&l ...
- Vue2的独立构建与运行时构建的差别
其实这个问题在你使用vue-cli构建项目的时候是不会出现的,因为你在创建项目的构建过程中已经让你勾选了,然后会写入webpack.config.js中. 这就在这,会让你选择Vue的构建方式. 如果 ...
- Java并发编程:4种线程池和缓冲队列BlockingQueue
一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池.使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动 ...
- CentOS7为php7.2安装php-redis扩展
先下载phpredis-develop cd /tmpwget https://codeload.github.com/phpredis/phpredis/zip/develop 安装unzip.zi ...
- 突破这个四个阶段年薪没有50W,还好意思说是搞Java的?
该视频教程总共分为四个阶段来学习.逐步进阶,并且还会不定期更新.我简介一下每一个阶段的视频资源,学习顺序不分先后. 第一阶段 第一阶段主要从 svn/git 版本号控制.Java高并发.JVM虚拟机. ...
- pandas DataFrame apply()函数(2)
上一篇pandas DataFrame apply()函数(1)说了如何通过apply函数对DataFrame进行转换,得到一个新的DataFrame. 这篇介绍DataFrame apply()函数 ...
- Scratch 可能能帮你找到学习编程的初心
Scratch 是MIT 出品的一款少儿编程软件,基于Adobe Air开发,这个运行环境在如今已经显得有些过时,但只要这个软件有用,软件本身就不会过时. 编程的本质大致是调用计算机的指令编写一系列任 ...