栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 闭包 装饰器 委托属性

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 闭包 装饰器 委托属性

1、闭包
"""
什么是闭包?
简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。
闭包的特征?
1)有内层函数和外层函数,
2)内层函数调用了外层函数的临时变量/参数 ,
3)外层函数返回内层函数的引用
"""

# 定义闭包,完成的功能为:传入一个数求和并输出

class pack:
    def fun1(self):
        list_data = []
        def fun2(data):
            list_data.append(data)
            print(sum(list_data))
        return fun2


p1 = pack()
f = p1.fun1()
# 例如: 传入10 ->输出10
f(10)
# 传入15 ->输出25
f(15)
# 传入20 ->输出45
f(20)
2、装饰器
#定义一个装饰器:打印函数运行花费的时间
# 你在执行之前获取一个时间
# 执行函数
# 在执行函数之后获取一个时间
# 去求时间差
# time模块
import time


def outer(fun):

    def inner():
        tim1 = time.time()
        fun()
        tim2 = time.time()
        print(tim2 - tim1)
    return inner


@outer
def fun3():
    for i in range(10000000):
        pass


fun3()
3、委托属性
# 4.定义一个类:
# 要求:包含一个对象属性,且用_(单下划线)命名的
# 定义一个类方法(装饰器)
# 定义一个静态方法(装饰器)
# 定义委托属性(三个类装饰器): 可以访问_命名的属性的值
# 可以修改_命名的属性的值
# 可以删除_命名的属性

class A:
    def __init__(self, a):
        self._a = a

    @staticmethod
    def fun_static():
        print("static")

    @classmethod
    def fun_cls(cls):
        print(cls)

    @property
    def a(self):
        return self._a

    @a.setter
    def a(self, val):
        self._a = val

    @a.deleter
    def a(self):
        del self._a

# 执行:
# 实例一个对象
a1 = A(1)

# 调用静态方法(类和对象两种方式)
A.fun_static()
a1.fun_static()

# 调用类方法(类和对象两种方式)
A.fun_cls()
a1.fun_cls()

# 对象.委托属性
a1.a

# 对象.委托属性 = value
a1.a = 2

# del 对象.委托属性
del a1.a

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444666.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号