zoukankan      html  css  js  c++  java
  • Python基础(day12)

    day12

    主要内容

    • 装饰器

    • 推导式

    1. 装饰器

      # 语法
      '''
      装饰器; 在不改变原函数内部代码的基础上,在函数执行之前和之后自动执行某个功能
      应用:
          1. 计算函数时间
          2. ......
      语法格式:
          # 装饰器的编写
          def x(func):
              def y():
                  ret = func
                  return ret
              return y
          # 装饰器的应用
          @x
          def index():
              pass
          @x
          def manage():
              pass
          # 执行函数,自动触发装饰器
          index()
          manage()
      应用场景:
          想要为函数扩展功能时,可以选择装饰器
      标准编写格式:
          def 外层函数(参数):
              def 内层函数(*args,**kwargs):
                  return 参数()
              return 内层函数
      标准函数应用:
          @外层函数
          def 参数():
              pass
          参数()
      '''
      def func(arg):
          def inner():
              print('before')
              v = arg()
              print('after')
              return arg()
          return inner
      @ func
      # 第一步,执行func函数并将下面的函数参数传递,相当于func(index)
      # 第二步, 将func的返回值重新赋值给下面的函数名,相当于index = func(index)
      def index():
          print('123')
          return 666
      v = index()
      print(index)
      
    '''
    装饰器应用: 计算函数执行时间
    '''
    
    import  time
    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(2)
        print(123)
    @ wrapper
    def func3():
        time.sleep(2)
        print(123)
    func1()
    func2()
    func3()
    
    '''
    装饰器应用:基线框架
    '''
    # 装饰器
    def func(arg):
        def inner():
            print('已登录')
            v = func
            return v
        return inner
    
    # 功能函数
    @func
    def f1():
        print('新增功能')
        return 0
    @func
    def f2():
        print('删除功能')
        return 0
    @func
    def f3():
        print('更新功能')
        return 0
    f1()
    f2()
    f3()
    
    1. 推导式

      • 列表推导式

        • 基本格式

          '''
          目的: 方便的生产一个列表
          格式:
          	v= [i for i in 可迭代对象]
          	v= [i for i in 可迭代对象 if 条件] # 条件为真时执行append
          '''
          vlas = [ i for i in 'llk'] # 集合
          print(vlas)
          # 变量 = [ for循环的变量 for循环一个可迭代对象]
          v1 = [i for i in range(10)]
          print(v1)
          v2 = [i+100 for i in range(10)]
          print(v2)
          v3 = [99 if i>5 else 66 for i in range(10)]
          print(v3)
          
          def func():
              return 123
          v4 = [func for i in range(10)]
          
          v5 = [lambda : 100 for i in range(10)]
          result = v5[0]()
          
          def funa():
              return i
          v6 = [funa for i in range(10)]
          result = v6[5]()
          
          v7 = [lambda : i for i in range(10)]
          result = v7[5]()
          
          v8 = [lambda x:x*i  for i in range(10)] # 新浪微博面试题
          
          # 面试题
          def num():
              return [lamba x:i*x for i in range(4)]
          # num() -> [函数,函数,函数,函数]
          print ([ m(2) for m in num() ]) # [6,6,6,6] 
          
          
      • 集合推导式

        '''
        目的: 方便的生产一个集合
        格式:
        	v= {i for i in 可迭代对象}
        	v= {i for i in 可迭代对象 if 条件} 
        '''
        
      • 字典推导式

        '''
        目的: 方便的生产一个字典
        格式:
        	v= {'k' + str(i):i for i in 可迭代对象}
        
        '''
        
  • 相关阅读:
    Installutil.exe的位置和路径
    .net服务安装(转载)
    移动程序云测试中心
    如何通过web地址直接调用webservices
    VC++引用类型与指针类型
    Android模拟 HTTP multipart/formdata 请求协议信息实现图片上传
    firefox看网页的插件
    DOS下输入汉字
    电脑APK
    HDOJ 1071(球泡无线和直线区域内的面积)
  • 原文地址:https://www.cnblogs.com/lilangkui/p/12688678.html
Copyright © 2011-2022 走看看