【Python学习日记- 第十一天】

本文介绍了Python中的闭包概念及其特点,通过示例展示了如何创建一个闭包来实现传入数值求和的功能。接着探讨了装饰器的使用,讲解了如何定义一个装饰器以计算函数运行时间,并引入了time模块。最后,详细讲解了类的构造,包括带下划线的私有属性、类方法、静态方法以及委托属性的实现和使用方法。
摘要由CSDN通过智能技术生成

1.什么是闭包?闭包的特征?

定义闭包,完成的功能为:传入一个数求和并输出
例如: 传入10 ->输出10
传入15 ->输出25
传入20 ->输出45

1.什么是闭包?
    简单来说,闭包是指可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。
    即重用一个变量,又保护变量不被污染的一种机制。
闭包的特征?
    (1)内部的函数可以访问外部的内容
    (2)外部不能访问内部函数的变量
    (3)里面的变量和参数不会被垃圾回收机制回收
def outer():
    result = []

    def inner_a(value):
        result.append(value)
        print(sum(result))
    return inner_a


inner = outer()
inner(10)
inner(15)
inner(20)

2.定义一个装饰器:打印函数运行花费的时间

你在执行之前获取一个时间
执行函数
在执行函数之后获取一个时间
去求时间差
time模块

import time


def cost_time(func):
    def inner(*args, **kwargs):
        before_time = time.time()
        func(*args, **kwargs)
        after_time = time.time()
        print(after_time - before_time)
    return inner


print(time.time())


@cost_time
def login():
    time.sleep(1)
    print('login')


login()

3.定义一个类

要求:
包含一个对象属性,且用_(单下划线)命名的
定义一个类方法(装饰器)
定义一个静态方法(装饰器)
定义委托属性(三个类装饰器): 可以访问_命名的属性的值
可以修改_命名的属性的值
可以删除_命名的属性
执行:
实例一个对象
调用类方法(类和对象两种方式)
调用静态方法(类和对象两种方式)
对象.委托属性
对象.委托属性 = value
del 对象.委托属性

class TestClass:

    def __init__(self):
        self._data = None

    @classmethod
    def class_method(cls):
        print("class method!!")

    @staticmethod
    def static_method():
        print("static method!!")

    @property
    def data(self):
        return self._data

    @data.setter
    def data(self, value):
        self._data = value

    @data.deleter
    def data(self):
        del self._data


test_class = TestClass()
TestClass.class_method()
TestClass.static_method()
test_class.class_method()
test_class.static_method()

print(test_class.data)

test_class.data = "data"
print(test_class.data)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值