python中的装饰器

  1. 闭包函数
    在看装饰器以前,咱们先来搞清楚什么是闭包函数。python是一种面向对象的编程语言,在python中一切皆对象,这样就使得变量所拥有的属性,函数也一样拥有。这样咱们就能够理解在函数内建立一个函数的行为是彻底合法的。这种函数被叫作内嵌函数,这种函数只能够在外部函数的做用域内被正常调用,在外部函数的做用域以外调用会报错,例如:
    python中的装饰器
    而若是内部函数里引用了外部函数里定义的对象(甚至是外层以外,但不是全局变量),那么此时内部函数就被称为闭包函数。闭包函数所引用的外部定义的变量被叫作自由变量。闭包从语法上看很是简单,可是却有强大的做用。闭包能够将其本身的代码和做用域以及外部函数的做用结合在一块儿。下面给出一个简单的闭包的例子:
    而若是内部函数里引用了外部函数里定义的对象(甚至是外层以外,但不是全局变量),那么此时内部函数就被称为闭包函数。闭包函数所引用的外部定义的变量被叫作自由变量。闭包从语法上看很是简单,可是却有强大的做用。闭包能够将其本身的代码和做用域以及外部函数的做用结合在一块儿。下面给出一个简单的闭包的例子:
    def count():
    a = 1
    b = 1
    def sum():
    c = 1
    return a + c # a - 自由变量
    return sum
  2. python装饰器

def welcome(func): # 参数是一个函数
def inner_f():
"""这是装饰器中的welcome函数"""
print('welcome'.center(40,'~'))
func()
return inner_f # 返回值是另外一个函数,使用该返回的函数替代做为参数的函数python

@welcome # 说明底下定义的函数被welcome所装饰,使用该返回的函数替代做为参数的函数
def name():
"""这个是name函数"""
print('name is toto')编程

name() # 调用welcome 函数闭包

python中的装饰器

一、 被装饰的函数存在参数的时候编程语言

在构建装饰器的时候,做为返回值的函数是用来替代做为参数的函数的,因此这两个函数所须要的参数必须一致。就时说再定义函数装饰器的时候,指定做为参数的函数能够因为任意个参数以及做为返回值的函数能够右任意个参数,这样就能保证再实际使用的时候不论被装饰的函数须要几个参数,都能使用该装饰器。
def welcome(func): # 参数是一个函数
def inner_f(*args,*kwargs): # 指定返回的函数能够有任意个参数
"""这是装饰器中的welcome函数"""
print('welcome'.center(40,'~'))
func(
args,**kwargs) # 做为参数的函数也有任意个参数
return inner_f # 返回值是另外一个函数ide

@welcome # 能够装饰一个参数的函数
def name(name):
"""这个是name函数"""
print('name is %s' %name)函数

@welcome # 也能够装饰两个参数的函数
def stuinfo(name,age):
print('name is %s ,age is %d' %(name,age))ui

name('toto')
stuinfo('lala',16)对象

python中的装饰器

相关文章
相关标签/搜索