装饰器补充、三元表达式、生成式、匿名函数
一、叠加多个装饰器
import time
def timmer(func):
def wrapper():
start_time=time.time()
res=func()
end_time=time.time()
print('time is %s' %(end_time-start_time))
return res
return wrapper
def outer(func):
# func=home
def inner(*args,**kwargs):
name=input('请输入名字:').strip()
pwd=input('请输入密码:').strip()
with open('aaa','r',encoding='utf8')as f:
for line in f:
data=line.strip('\n').split(',')
if name == data[0] and pwd == data[1]:
print('login successfully')
break
else:
print('username or password error')
func(*args,**kwargs)
return inner
@timmer
@outer
def home():
time.sleep(1)
print('welcome to home page')
home()
装饰器补充:
def outer(func):
@wraps(func) #把所有属性赋值给wrappr
备注:
装饰器是要写到源函数正上方,一个装饰器写一行
timmer写到上面统计的是下面两个函数执行的时间
timmer写到下面统计的只是源函数执行的时间
结论:
1. 加载顺序(outter函数的调用顺序):自下而上
2. 执行顺序(wrapper函数的执行顺序):自上而下
二、有参装饰器
当装饰器需要传参的时候用有参装饰器
所谓有餐装饰器,就是套用三个函数
所传参数可以是一个,也可以不止一个,多个参数之间用逗号隔开
三、三元表达式
正常的比较函数:
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(10,20)
print(res)
如果用三元表达式:
x=10
y=20
res=x if x > y else y
print(res)
四、生成式
1.列表生成式
正常for循环生成列表:
l=[]
for i in range(10):
if i > 4:
l.append(i**2)
print(l)
列表生成式生成列表:
l=[i**2 for i in range(10) if i > 4]
print(l)
也可以添加各种功能:
names=['egon','alex_sb','kevin_sb','hxx_sb','cxx_sb']
sbs=[name.upper() for name in names if name.endswith('sb')]
2.字典生成式
res={i:i**2 for i in range(10) if i > 3}
print(res)
3.集合生成式
res={i for i in 'hello'}
print(res)
备注:
元组不能用生成式
五、匿名函数
就是之定义了一个函数的内存地址,主要用于临时使用一次的场景
自带ruturn功能,
res=(lambda x,y:x+y)(1,2)
print(res)
一般不会单独用,和别的函数配合使用:
排序:
l=[4,2,3]
l_new=sorted(l,reverse=True)
print(l_new)
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
print(sorted(salaries,key=lambda k:salaries[k],reverse=True))
转载于:https://www.cnblogs.com/zhangxin-/p/10045015.html
装饰器补充、三元表达式、生成式、匿名函数相关推荐
- 29.递归三元表达式生成式匿名函数
文章目录 1.递归函数 1.1定义 1.2案例1 1.3案例2 1.4案例3 2.三元表达式 2.1格式 2.2使用 2.3嵌套 3.生成式 3.1列表生成式 3.2字典生成式 3.3集合生成式 3. ...
- Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录...
上节课复习: 1.函数的对象 函数可以被当作数据取处理 2.函数嵌套 嵌套调用:在调用一个函数时,函数体代码又调用了其他函数 嵌套定义:在一个函数内部又定义了另一个函数 1 d ...
- python入门day16——函数的递归调用、二分法、三元表达式、匿名函数
文章目录 函数的递归调用 递归调用应该分为两个阶段 二分法 三元表达式 匿名函数 函数的递归调用 函数的递归调用:就是在调用一个函数的过程中又直接或间接地调用自己 示例1:直接调用自己 def foo ...
- Python装饰器、生成器、内置函数、Json-Day05
装饰器 装饰器本质上就是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理 ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- python中高阶函数和装饰器_三.Python高阶函数和装饰器
1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...
- 函数声明、函数表达式、匿名函数、立即执行函数
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- lambda表达式可以用来声明_lambda表达式可以用来创建包含多个表达式的匿名函数...
[单选题]下面程序中语句print(i*j)一共执行了____次. for i in range(5): for j in range(2,5): print(i*j) [填空题]_____是目前比较 ...
- Python中lambda表达式_匿名函数
lambda表达式和匿名函数 lambda表达式 lambda表达式可以用来声明匿名函数,实际生成一个函数对象. lambda表达式只允许包含一个表达式,该表达式的计算结果就是函数的返回值. ...
最新文章
- 基于htmlparser实现网页内容解析
- H3C大数据产品介绍
- 纯CSS3实现Material Design
- java 反射调用方法_java的反射机制,以及通过反射获取方法,变量等操作
- html5 音频事件,HTML5中视频和音频核心事件的相关研究
- VVC/JEM代码学习15:xCheckRDCostAffineMerge2Nx2N
- CocosBuilder 教程
- Web全栈工程师应该会什么?
- 宏想固态无法格式化,SM2258XT主控开卡成功经验,SM2259XT可参考
- 行测题练习(7-29)【1】
- 计算机格式化后,电脑格式化后需要重装系统吗_格式化电脑重装系统的方法步骤...
- OutMan——Objective-C内存管理
- 中小企业OA系统视频教程(更新程度:完毕)送ppt源码
- 3.Elasticsearch-查询的多种方式
- 今日头条Go建千亿级微服务的实践
- 微信提现(商户向商家转账)
- Wifi网络共享----Connectify 使用
- 简述TCP三次握手,看不懂算我输!
- 迅为iTOP6818开发板QtE5.7应用例程源码
- PlayStation Now比您想象的要好
热门文章
- mysql开启中继日志,MySQL复制应用中继日志解析
- java分布性_java大型分布系统性能优化实战教程
- add svn 多个文件_用好Git 和 SVN ,轻松驾驭版本管理
- 正态分布某一点的概率怎么算_笔记|复习金融计量中概率随笔1(样本推整体)
- 笔记本电脑如何保养_电脑温度一高就“翻脸”,电脑小白该如何解决?学会少花冤枉钱...
- php iis user,IIS+PHP环境的./路径问题
- qchart能绘制三维_通图GIS | 用多种体展示方案适配复杂三维场景分析、表达
- 渣男,你为什么有这么多小姐姐的照片?因为我Python爬虫学的好啊❤️!
- jsp面试问题_JSP面试问答
- python 多关键字排序_用Python排序字​​典