Python基础学习——函数相关(二),闭包,装饰器,文档字符串

一.闭包(closure)

1.定义:将内嵌函数的语句和这些语句的执行环境打包之后得到的函数对象成为闭包。

2.条件:

1.必须有一个内嵌函数
2.内嵌函数必须引用外部函数中的变量
3.外部函数返回值必须是内嵌函数
示例:

def my_sum(y):
    def fx(x):     #内嵌函数
        return x+y #y是外部函数中的变量
    return fx      #函数返回值是内嵌函数
a=my_sum(1)
print('1+2=',a(2))
#原本y在调用一次后应该会销毁,但是由于内嵌函数包含了这个变量,所以它没有销毁,必须跟着内嵌函数

二.装饰器(decorators)

1.定义:包装另一个函数或类的函数,目的是在不改变原函数名的情况下改变被包装对象的行为

下面列举函数装饰器的例子:

def my_decorate(fx):
    def fn():
        print('I love you')
    return fn
def love():
    print('I love you too')
love=my_decorate(love)
love()#得到结果是I love you

具体语法格式是:

def my_decorate(fx):
    def fn():
        print('I love you')
    return fn
@my_decorate
def love():
    print('I love you ,too')
love()#得到结果是I love you

使用多个装饰器:

def my_decorate(fx):
    def fn():
        print('I love you')
        fx()
    return fn
def decorate(fx):
    def fn():
        print("Do you love me?")
        fx()
    return fn
@decorate
@my_decorate
def love():
    print('I love you ,too')
love()#得到结果是
#Do you love me?
#I love you
#I love you ,too

三.函数的文档字符串

1.作用:通常用来描述函数的作用

2.函数的_doc_属性:函数第一次未赋值给任何变量的字符串是此函数的文档字符串,此字符串会自动赋值给函数的__doc__属性(注意是两个下划线连在一起)

示例:

def love():
    '表达我爱你'
    print('I love you too')
print(help(love))
print(love.__doc__)

你可能感兴趣的:(python基础学习)