其他分享
首页 > 其他分享> > 函数的嵌套闭包以及装饰器的了解

函数的嵌套闭包以及装饰器的了解

作者:互联网

目录

image

名称空间的作用域

# 作用域
	名称空间所能作用的范围
# 内置名称空间
	程序任何阶段任何位置都可以使用(全局有效)
# 全局名称空间
	程序任何阶段任何位置都可以使用(全局有效)
# 局部名称空间
	一般情况下只在各自的局部名称空间中有效

image

global与nonlocal关键字使用


# 关键字global: 局部修改全局变量
# 关键字nonlocal: 内部局部修改外部局部


'''
如果想在局部修改全局数据
    如果数据为不可变类型则需要关键字global和nonlocal声明
    如果数据为可变类型则无需关键字global和nonlocal声明
'''


image

image

image

函数对线(函数名)

# 函数遇到括号就会被调用

image

image

image

image

image

函数的嵌套调用

# 嵌套调用:函数内部调用其他函数

image

image

image

函数的嵌套定义

# 函数体内部定义其他函数
# 将复杂的功能全部隐藏起来 暴露一个简单的接口

image

闭包函数

# 闭 :定义在函数内部的函数
# 包 :内部函数使用了外部函数的名称空间中的名字
'只有同时满足这两个特征的函数才能叫做闭包函数'
# 闭包函数其实是给函数传参的第二种方式

def index(username):
    print(username)
def my_max(a, b):
    if a > b:
        return a
    return b


def outer(x,y):
    # x = 2
    # y = 40
    def my_max():
        if x > y:
            return x
        return y
    return my_max


res = outer(2,4)
print(res())

image

image

装饰器的了解


"""
装饰器并不是一个新的知识
	而是由我们之前所学习的 名称空间 函数对象 闭包函数组合而来
"""
# 器:指的是工具
# 装饰:给被装饰的对象添加额外功能

# 装饰器的原则就是

'''
装饰器的原则
	开放封闭原则
    	开发:对扩展开放
        封闭:对修改封闭
'''

'装饰器核心思想
  在不改变被"装饰对象内部代码"和"原有调用方式"的基础之上添加额外功能'

image

image

标签:闭包,函数,global,nonlocal,嵌套,装饰
来源: https://www.cnblogs.com/BBSDBZ/p/15561376.html