装饰器

python学习网 2017-12-07 06:00:14

装饰器:

 

定义:本质就是函数,(装饰其它函数),就是为其它函数添加附加功能。

原则:1.不能修改被装饰的函数的源代码。

     2.不能修改被装饰的函数的调用方式。(被修饰函数感知不到)

实现装饰器知识储备:

  1. 函数即"变量"
  2. 高阶函数

    A:把一个函数名,当做形参传给另外一个函数。

    B:返回值中包含函数名

Def bar():

    print

Def test1(func):

    Print(func)

  1. 嵌套函数

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

  1. 匿名函数直接保存在内存中,使用完后,直接回收掉。Lambda X:X*3
  2. 函数就是"变量",就是把函数体保存在内存中。

    X=1

     

     

        Lambda X:X*3

 

 

 

解释:当x=1时,在内存中放置门牌号x,匿名函数则没有门牌号,直接在里面保存值,匿名函数在使用完毕后,直接清空。一般函数则不会,如果要删除它,只是删除门牌号,里面的值则不会,直到内存时钟自动到时刷新找不到值的门牌号时,才会自动清除它。

 

装饰器详解

    

原则:

  •     封闭:已实现的功能代码块不应该被修改
  • 开放:对现有功能的扩展开放

Lambda匿名函数

非固定参数*args,**kwargs

__author__ = 'wangpeng'

user_status = False#
当用户登录了就改为True
def login(func):
def inner(*args,**kwargs):#
再定义一层函数。
user_name="wph1028"
user_password="abc123"#
数据库文件
global user_status#定义全局变量

if user_status==False:
name=input("pelase your name:")
password=input("please your password:")

if name==user_name and password==user_password:
print("welcome login!")
user_status=True
else
:
print("invalibal name or password!")
if user_status==True:
func(*args,**kwargs)
return inner


@login
def index():
print("shouye page")
#@login
def film():
print("film page")
#@login
def music():
print("music page")


index()
film()
music()

*总结:对于装饰器,还是不太明白,先放过吧,以后再加强。

阅读(837) 评论(0)