zoukankan      html  css  js  c++  java
  • day20

    def run():
      print('fron run')
      print('fron run')
      print('fron run')
      print('fron run')
      print('fron run')
    run()


    def test():
      print('from run')
      yield 1
      print('from run')
      yield 1
    t=test()
    next(t)


    ptint('')
    ptint('')
    ptint('')

    next(t)


    next(t)
    t.__next()
    t.send('123')

    res=True if age>10 else False

    l=[i for i in range(10)]
    g_l=(i for i in range(4))


    def test():
      for i in range(4):
        yield id
    t=test()

    t1=(i for i in t)
    for i in t1:
    print(i)

    print(list(t1)) #什么都没有

    def test():
      for i in range(4):
        yield id
    t=test()

    t1=(i for i in t)
    t2=(i for i in t1)
    print(list(t1)) #[0,1,2,3]
    print(list(t2)) #[]

    l=[1,2,3]
    l.__iter__() #iter(l)

    装饰器:本质就是函数,功能为其他函数添加附加功能

    原则:
    不修改被修饰函数的源代码
    不修改被修饰函数的调用方式

    import time
    def cal(l)
      start_time=time.time()
      res=0
      for i in l:
        time.sleep(0.1)
        res+=i
      stop_time=time.time
      time=stop_time-start_time
      print('函数的运行时间是%s' %time)
      return res

    print(cal(range(100)))


    def index():
      pass

    def home():
      pass


    装饰器的知识储备
    装饰器=高阶函数+函数嵌套+闭包

    import time
    def timmer(func):
      def wrapper(*args,**kwargs)
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print('函数运行时间是%s' %(stop_time-start_time))
        return res
      return wrapper


    @timmer


    def cal(l)
    #  start_time=time.time()
      res=0
      for i in l:
        time.sleep(0.1)
        res+=i
    #  stop_time=time.time
    #  time=stop_time-start_time
    #  print('函数的运行时间是%s' %time)
      return res

    print(cal(range(20)))



    高阶函数
    1、函数接收的参数是一个函数名
    2、函数的返回值是一个函数名
    import time
    def foo():
      time.sleep(3)
      print('你好啊林师傅')
    def test(func):
    #  print(func)
      start_time=time.time()
      func()
      stop_time=time.time()
      print('函数运行时间%s' %(stop_time-start_time))
    test(foo)


    def foo():
      print('from the foo')
    def test(func):
      return func

    #res=test(foo)
    #print(res)
    #res()

    foo=test(foo)
    foo()

    import time
    def foo():
      time.sleep(3)
      print('from the foo')

    #不修改foo源代码
    #不修改foo调用方式

    def test(func):
      start_time=time.time()

      func()
      stop_time=time.time()
      print('函数运行时间%s' %(stop_time-start_time))
      return func

    foo=test(foo)
    foo()

    #结果 多运行了一步
    from the foo
    函数运行时间3.00064754486084
    from the foo

    def bar():
      print('from bar')

    def foo():
      print('from foo')
    def test():
    pass #在函数内部定义另一个函数

    def father(name):
      print('from father %s' %name)
      def son():
    # name='linhaifeng'
        print('from son %s' %name)
    # print(locals()) #name son
        def grandson():
    # name='就是我自己'
          print('from grandson %s' %name)
        grandson()
      son()
    father('alex')



    def father(name):
      print('from father %s' %name)
      def son():
        print('from son')
        def grandson():
          print('from grandson')
        grandson()
      son()
    father('linhaifeng')

    def timer(func): #自己思考的 没有实现功能
      def test():
        starttime=time.time
        func()
        stoptime=time.time
        print('运行时间为%s' %(stop_time-start_time))
      test()
      return func
    res=timer(foo)

    #装饰器的框架
    def timmer(func):
      def wrapper():
        print(func)
        func()
      return wrapper


    import time

    def timmer(func):
      def wrapper():
       start_time=time.time()
        func() #就是在运行test
        stop_time=time.time()
        print('运行时间为%s' %(stop_time-start_time))
      return wrapper

    @timmer         test=timmer(test)
    def test():
      time.sleep(3)
      print('test函数运行完毕')
    test()

    #test=timmer(test) #返回的是wrapper的地址
    #test() #执行的是wrapper函数
    @timmer 就相当于 test=timmer(test)


    #函数闭包加上返回值

    import time

    def timmer(func):
      def wrapper():
        start_time=time.time()
        res=func() #就是在运行test
        stop_time=time.time()
        print('运行时间为%s' %(stop_time-start_time))
        return res
      return wrapper

    @timmer #test=timmer(test)
    def test():
      time.sleep(3)
      print('test函数运行完毕')
      return '这是test返回值'


    res=test() #就是在运行wrapper
    print(res)


    加参数

    import time

    def timmer(func):
      def wrapper(name,age):
        start_time=time.time()
        res=func(name,age) #就是在运行test
        stop_time=time.time()
        print('运行时间为%s' %(stop_time-start_time))
        return res
      return wrapper

    @timmer #test=timmer(test)
    def test(name,age):
      time.sleep(3)
      print('test函数运行完毕')
      return '这是test返回值'


    @timmer # test=timmer(test)
    def test1(name,age,gender):
      time.sleep(3)
      print('test1函数运行完毕')
      return '这是test1返回值'


    res=test() #就是在运行wrapper
    print(res)

    test1('alex',19,'male')


    #解决方案
    import time

    def timmer(func):
      def wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs) #就是在运行test
        stop_time=time.time()
        print('运行时间为%s' %(stop_time-start_time))
        return res
      return wrapper

    @timmer #test=timmer(test)
    def test(name,age):
      time.sleep(3)
      print('test函数运行完毕 名字是%s' %name)
      return '这是test返回值'


    @timmer # test=timmer(test)
    def test1(name,age,gender):
      time.sleep(3)
      print('test1函数运行完毕性别是%s' %gender)
      return '这是test1返回值'


    res = test('linhaifeng',18) #就是在运行wrapper
    print(res)

    test1('alex',19,'male')

    解压序列
    a,b,c=(1,2,3)

    l=[10,3,2,3,5,1,2,3,5,8,9]
    a,*_,c=l

    a=1,b=2 交换值

    x=a
    a=b
    b=x

    f1=1
    f2=2if
    f1,f2=f2,f1

    user_list=[
      {'name':'alex','passward':'123'},
      {'name':'linhaifeng','passward':'123'},
      {'name':'wupeiqi','passward':'123'},
      {'name':'yuanhao','passward':'123'}

    ]


    current_dic={'user_name':None,'log':False}
    def log(login_type='filedb'):
      def login(func):
        def wrapper(*args,**wkargs):
          print('%s' %login_type)
          if login_type=='filedb':

            if current_dic['user_name'] and current_dic['log']:
              res = func(*args, **wkargs)
              return res
            name = input('请输入登录名')
            passward = input('请输入密码')
            for user_dic in user_list:
              if name == user_dic['name']:
                current_dic['user_name'] = user_dic['name']
                if passward == user_dic['passward']:
                  current_dic['log'] = 'True'
                  res=func(*args,**wkargs)
                  return res

            else:
              print('用户名或密码错误')

          elif login_type=='ldap':
            print('不知道怎么玩')
          else:
            print('不知道')
        return wrapper

      return login
    @log(login_type='filedb') #login的内存地址 相当于 @login 附加了一个login_type,
    def index():
    print('欢迎来到京东主页')
    @log(login_type='ldap')
    def home(name):
    print('欢迎回家%s' %name)
    @log(login_type='sssss')
    def shopping_car(name):
    print('%s购物车里有%s,%s,%s' %(name,'奶茶','妹妹','娃娃'))

    def order():
      pass

    index()
    home('alex')
    shopping_car('产品经理')

     2018-08-24

  • 相关阅读:
    关于管理的经典故事(员工激励)
    通过SQL语句获取MSSQL数据库的数据字典
    AMF(java)学习笔记(一)
    ActionScript 3.0著名开源库 大集合
    Flash全屏功能详解
    NIO网络编程框架MINA2.0学习笔记(一)
    一份相当巨大的AS类库
    java NIO非阻塞式IO网络编程学习笔记(一)
    数据传输序列化与反序列化协议大全
    RED5学习笔记(一):RED5简介
  • 原文地址:https://www.cnblogs.com/jiangjunfeng/p/9528180.html
Copyright © 2011-2022 走看看