zoukankan      html  css  js  c++  java
  • python第十一天

    开始第二模块的学习:

    装饰器 :

    描述:

    装饰器原则:

      1、不能修改被装饰的函数的源代码

      2、不能修改装饰的函数的调用方试

    实现装饰器的需要:

      高阶函数+嵌套函数=装饰器

      高阶函数:

          类型I:将函数做为实参的函数,可以称为高阶函数

            

    1 def fun_1(fun_2):#fun_1 为高阶函数
    2     print('1')
    3     fun_2()
    4 
    5 def fun_2():
    6     print('2')
    7 
    8 fun_1(fun_2)

          类型II:返回值中包含函数名的函数,也可以称为高阶函数

          

    def fun_3(fun):#fun_3 为高阶函数
        print('3')
        return fun
    
    def fun_4():
        print('4')
    
    #fun_3(fun_4)()#返回值可以直接运行
    fun=fun_3(fun_4)#可以将返回值赋于一个变量
    fun()#可以调用函数

      嵌套函数:

          在函数中定义一个新函数,这个函数称为嵌套函数

        

    1 def fun_5():#fun_5 为嵌套函数
    2     print('5')
    3     def fun_5_1():
    4         print('5.1')
    5     
    6 fun_5()

    最简单的装饰:

     1 def fun_2(fun):#传入fun_1的函数
     2     def function():
     3     
     4         fun()
     5         print('in the fun_2......')#增加新的内容
     6     
     7     return function
     8 
     9 @fun_2#装饰fun_!  相当于fun_1=fun_2(fun_1)
    10 def fun_1():
    11     print("in the fun_1....")
    12 
    13 
    14 fun_1()

    装饰器: 模拟登陆认证

     1 #模拟网站登陆访问认证
     2 #
     3 name='abc'
     4 password='123'
     5 def certi(model):#装饰器
     6     def outr(fun):#装饰器加参数需要多加一层嵌套
     7         def login(*args,**kwargs):#为了兼容各类函数参数,添加 *args,**kwargs 不固定参数
     8             if model=='password':
     9                 print('这是password认证')
    10                 user_name = input('用户名:').strip()
    11                 paswd=input('密码:').strip()
    12                 if user_name==name and paswd==password:    
    13                     print('通过认证')
    14                     return fun(*args,**kwargs)
    15                 else:
    16                     print('用户或密码错误 ,退出')
    17                     exit()
    18             elif model=='lamp':
    19                 print('这是lamp认证')
    20                 return fun(*args,**kwargs)
    21             else:
    22                 print('认证出错')
    23         return login
    24     return outr
    25 
    26 
    27 def indxe():
    28     print('欢迎进入首页')
    29 
    30 @certi(model='password')
    31 def user():
    32     print('欢迎进入用户页面:')
    33 
    34 @certi(model='lamp')
    35 def bbs(name):
    36     print('欢迎%s登陆论坛!!'%name)
    37 
    38 indxe()
    39 user()
    40 bbs(name='yjj')

      

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【莫柔落切】!

    联系或打赏博主【莫柔落切】!https://home.cnblogs.com/u/uge3/

  • 相关阅读:
    c语言中限制用户输入整数
    c语言 输入验证(限制输入正数)
    c语言中只读取输入的一行字符的首个字符
    python如何通过代码自动免密登陆ssh
    计算机科学速成课 02:电子计算机、继电器、术语“bug”的来源、真空管、晶体管、发展路径 转
    golang ...用法
    01 _ 程序的运行过程:从代码到机器运行
    深入Golang调度器之GMP模型 转
    golang可视化
    修改默认输入法,用英文标点符号
  • 原文地址:https://www.cnblogs.com/uge3/p/6850900.html
Copyright © 2011-2022 走看看