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 ...
随机推荐
- Android--解决图片保存到相册显示1970年1月1日 8:00的问题
import android.content.Context; import android.content.Intent; import android.database.Cursor; impor ...
- 一幅图,看懂中国CMMI
以下数据由Fancier凡奉信息根据历年CMMI Institute公布的CMMI评估结果的汇总整理.数据跨度2008-2017年,包含对中国CMMI与全球CMMI的不同等级.版本的统计.
- Spring 事务与脏读、不可重复读、幻读
索引: 目录索引 参看代码 GitHub: 1.Spring 事务 2.事务行为 一.Spring 事务: Spring 的事务机制是用统一的机制来处理不同数据访问技术的事务处理. Spring 的事 ...
- C#常用的网络组件
常用的网络组件 using System.Net;//为多种网络协议提供统一和简单的编程接口 using System.Net.Mail;//为简单邮件传输协议的服务器提供E-mail发送的类 usi ...
- es crul查询(一)
C:\Users\Administrator>elasticdump --input=D:\test --output=http://localhost:9200/logs_apipki_201 ...
- const关键字到底该怎么用
原文地址:https://www.yanbinghu.com/2019/01/28/7442.html 前言 我们都知道使用const关键字限定一个变量为只读,但它是真正意义上的只读吗?实际中又该如何 ...
- 【转】Vue.js中 watch 的高级用法
假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type=&q ...
- 数据库訪问技术之JDBC
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhuojiajin/article/details/32150883 在了解JDBC之前呢, ...
- UVALive - 5135 - Mining Your Own Business(双连通分量+思维)
Problem UVALive - 5135 - Mining Your Own Business Time Limit: 5000 mSec Problem Description John D ...
- FileMode文件模式(转载)
FileMode指定操作系统打开文件的方式. Append 6 若存在文件,则打开该文件并查找到文件尾,或者创建一个新文件. 这需要 Append 权限. FileMode.Append 只能与 Fi ...