一、叠加多个装饰器

  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

装饰器补充、三元表达式、生成式、匿名函数相关推荐

  1. 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. ...

  2. Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录...

    上节课复习: 1.函数的对象     函数可以被当作数据取处理 2.函数嵌套     嵌套调用:在调用一个函数时,函数体代码又调用了其他函数     嵌套定义:在一个函数内部又定义了另一个函数 1 d ...

  3. python入门day16——函数的递归调用、二分法、三元表达式、匿名函数

    文章目录 函数的递归调用 递归调用应该分为两个阶段 二分法 三元表达式 匿名函数 函数的递归调用 函数的递归调用:就是在调用一个函数的过程中又直接或间接地调用自己 示例1:直接调用自己 def foo ...

  4. Python装饰器、生成器、内置函数、Json-Day05

    装饰器 装饰器本质上就是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理 ...

  5. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别

    函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...

  6. python中高阶函数和装饰器_三.Python高阶函数和装饰器

    1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...

  7. 函数声明、函数表达式、匿名函数、立即执行函数

    函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...

  8. lambda表达式可以用来声明_lambda表达式可以用来创建包含多个表达式的匿名函数...

    [单选题]下面程序中语句print(i*j)一共执行了____次. for i in range(5): for j in range(2,5): print(i*j) [填空题]_____是目前比较 ...

  9. Python中lambda表达式_匿名函数

    lambda表达式和匿名函数 lambda表达式 ​ lambda表达式可以用来声明匿名函数,实际生成一个函数对象. ​ lambda表达式只允许包含一个表达式,该表达式的计算结果就是函数的返回值. ...

最新文章

  1. 基于htmlparser实现网页内容解析
  2. H3C大数据产品介绍
  3. 纯CSS3实现Material Design
  4. java 反射调用方法_java的反射机制,以及通过反射获取方法,变量等操作
  5. html5 音频事件,HTML5中视频和音频核心事件的相关研究
  6. VVC/JEM代码学习15:xCheckRDCostAffineMerge2Nx2N
  7. CocosBuilder 教程
  8. Web全栈工程师应该会什么?
  9. 宏想固态无法格式化,SM2258XT主控开卡成功经验,SM2259XT可参考
  10. 行测题练习(7-29)【1】
  11. 计算机格式化后,电脑格式化后需要重装系统吗_格式化电脑重装系统的方法步骤...
  12. OutMan——Objective-C内存管理
  13. 中小企业OA系统视频教程(更新程度:完毕)送ppt源码
  14. 3.Elasticsearch-查询的多种方式
  15. 今日头条Go建千亿级微服务的实践
  16. 微信提现(商户向商家转账)
  17. Wifi网络共享----Connectify 使用
  18. 简述TCP三次握手,看不懂算我输!
  19. 迅为iTOP6818开发板QtE5.7应用例程源码
  20. PlayStation Now比您想象的要好

热门文章

  1. mysql开启中继日志,MySQL复制应用中继日志解析
  2. java分布性_java大型分布系统性能优化实战教程
  3. add svn 多个文件_用好Git 和 SVN ,轻松驾驭版本管理
  4. 正态分布某一点的概率怎么算_笔记|复习金融计量中概率随笔1(样本推整体)
  5. 笔记本电脑如何保养_电脑温度一高就“翻脸”,电脑小白该如何解决?学会少花冤枉钱...
  6. php iis user,IIS+PHP环境的./路径问题
  7. qchart能绘制三维_通图GIS | 用多种体展示方案适配复杂三维场景分析、表达
  8. 渣男,你为什么有这么多小姐姐的照片?因为我Python爬虫学的好啊❤️!
  9. jsp面试问题_JSP面试问答
  10. python 多关键字排序_用Python排序字​​典