python学习 day13 装饰器(一)&推导式
装饰器&推导式
传参位置参数在前,关键词参数在后
函数不被调用内部代码不被执行
函数在被调用的时候,每次都会开辟一个新的内存地址,互不干扰
#经典案例
def func(num):
def inner():
print(num)
return inner
result = []
for i in range(10):
f = func(i)
result.append(f)
v1 = result[0]()
v2 = result[9]()
print(v1,v2)
1.装饰器
- 装饰器:在不改变原函数内部代码也不改变调用方式的基础上,在执行函数之前和之后自动执行某个功能.
1.1基本结构
def 外层函数(参数):
def 内层函数(*args,**kwargs);
return 参数(*args,**kwargs)
return 内层函数
@外层函数
def index()
pass
#示例:
def func(arg):
def inner():
v = arg()
return v
return inner
@func
def index():
print(123)
return 666
print(index)
- @func :执行func函数把下面色函数当做参数传递,相当于:func(index)
- 将外层函数的返回值(内层函数)重新赋值给下面的函数名index,index = func(index)
1.2装饰器基本应用
应用场景:想要为函数扩展功能时,使用装饰器
计算运行时间
- 时间模块:time.time()获取当前时间
- time.sleep('秒数')睡眠
# 计算函数执行时间 def wrapper(func):
def inner():
start_time = time.time()
v = func()
end_time = time.time()
print(end_time-start_time)
return v
return inner
@wrapper
def func1():
time.sleep(2)
print(123)
@wrapper
def func2():
time.sleep(1)
print(123)
func1()
2.推导式
2.1列表推导式
方便生成一个列表
基本格式
# 变量 = [元素 for 元素 in 可迭代对象]
# 变量 = [元素 for 元素 in 可迭代对象 if 条件] **条件为True时元素才能添加到列表
lis = [i for i in 'bigox']
print(lis) lis = [i+100 for i in rang(10)]
print(lis) lis = [99 if i>5 else 66 for i in range(10)]
print(lis)
# 题
v8 = [lambda x:x*i for i in range(10)]
# 1.请问 v8 是什么?
# 2.请问 v8[0](2) 的结果是什么?
# 题
def num():
return [lambda x:i*x for i in range(4)]
# num() -> [函数,函数,函数,函数]
print([ m(2) for m in num() ]) # [6,6,6,6]
2.2集合推导式
参照列表推导式,注意集合不能重复
# 变量 = {元素 for 元素 in 可迭代对象}
# 变量 = {元素 for 元素 in 可迭代对象 if 条件} **条件为True时元素才能添加到列表
2.3字典推导式
基本格式
dic = {'k'+str(i) for i in range(10)}
小结
- 装饰器
- 书写格式
- 原理
- 应用格式
- 推导式
- 内置模块
- time.time() 获取当前时间,具有返回值
- time.sleep(秒数) 运行时驻留秒数
python学习 day13 装饰器(一)&推导式的更多相关文章
- python学习笔记--装饰器
1.首先是一个很无聊的函数,实现了两个数的加法运算: def f(x,y): print x+y f(2,3) 输出结果也ok 5 2.可是这时候我们感觉输出结果太单一了点,想让代码的输出多一点看起来 ...
- oldboy s21day13装饰器和推导式
#!/usr/bin/env python# -*- coding:utf-8 -*- # 2.请为 func 函数编写一个装饰器,添加上装饰器后可以实现:执行func时,先输入"befor ...
- python 学习分享-装饰器篇
本篇内容为偷窃的~哈哈,借用一下,我就是放在自己这里好看. 引用地址:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 第一步: ...
- python学习之装饰器-
python的装饰器 2018-02-26 在了解python的装饰器之前我们得了解python的高阶函数 python的高阶函数我们能返回一个函数名并且能将函数名作为参数传递 def outer() ...
- python学习day14 装饰器(二)&模块
装饰器(二)&模块 #普通装饰器基本格式 def wrapper(func): def inner(): pass return func() return inner def func(): ...
- Python学习 :装饰器
装饰器(函数) 装饰器作为一个函数,可以为其他函数在不修改原函数代码的前提下添加新的功能 装饰器的返回值是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等 ...
- python学习之-- 装饰器
高阶函数+嵌套函数 == 装饰器 什么是装饰器: 其实也是一个函数. 功能:为其他的函数添加附加功能 原则:不能修改被装饰的函数的源代码和调用方式 学习装饰器前首先要明白以下3条事项: 1:函数 即 ...
- python 学习笔记二 (列表推导式)
2018年年初写了第一篇博客,说要做一个认真的技术人 https://www.cnblogs.com/yingchen/p/8455507.html 今天已经是11月19日了,这是第二篇博客,看来坚持 ...
- Python学习笔记--装饰器的实验
装饰器既然可以增加原来函数的功能,那能不能改变传给原函数的参数呢? 我们实验一下,先上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date ...
随机推荐
- GNUstep 快捷键编译
$ gcc `gnustep-config --objc-flags` -L /GNUorld.m -o helloworld -lgnustep-base -lobjc $ ./helloworld ...
- java之网络爬虫介绍
文章大纲 一.网络爬虫基本介绍二.java常见爬虫框架介绍三.WebCollector实战四.项目源码下载五.参考文章 一.网络爬虫基本介绍 1. 什么是网络爬虫 网络爬虫(又被称为网页蜘蛛, ...
- QT解析和组装json
json这个小朋友熟悉又陌生,今天给同学们好好讲讲QT是如何使用json的,一句话:简单 1.什么是json? A:json就是个<key,value>字符串 ①一个json对象 {&qu ...
- CTS问题分析6
遇到一个Android P相关的问题,和原来CTS/GTS 问题分析1的表现是一样的,但是将 这个修复cp过来,发现不生效,仍然报错,因此记录一下 问题初探 测试命令: run gts -m GtsG ...
- C#学习笔记---C#操作SQL数据库
C#操作SQL数据库 Connection(连接)对象 连接字符串: 形式1.”server=;uid=;pwd=;database=” 形式2.”server=;Intergrated Securi ...
- c/c++ linux 进程 fork wait函数
linux 进程 fork wait函数 fork:创建子进程 wait:父进程等待子进程结束,并销毁子进程,如果父进程不调用wait函数,子进程就会一直留在linux内核中,变成了僵尸进程. for ...
- 6.1Python数据处理篇之pandas学习系列(一)认识pandas
目录 目录 (一)介绍与测试 2.作用: 3.导入的格式 4.小测试 (二)数据类型 1.两种重要的数据类型 2.pandas与numpy的比较 目录 (一)介绍与测试 号称处理数据与分析数据最好的第 ...
- crosstool-ng-1.22.0搭建开发环境
Ubuntu16.04无法安装libtool,只能在Ubuntu14.04以下版本安装. cp 下载/crosstool-ng-1.22.0.tar.bz2 /home/hou/ tar -x ...
- 日志学习系列(三)——NLog基础知识
前边我们解释了log4net的学习,我们再介绍一下NLog 一.什么是NLog NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码.NLog是一个简单 ...
- SpringBoot使用JSP(官网Demo)
最开始接触java的时候,前端页面基本都是用jsp来写,最近公司项目要使用SpringBoot重构,查看SpringBoot文档,发现SpringBoot不建议使用JSP,因为jsp在使用内嵌serv ...