闭包,类装饰lianx

简介: 当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外执行就产生了闭包.闭包是一个环境,具体指的就是外部函数–高阶函数。闭包有3个特性:①函数嵌套函数②函数内部可以引用函数外部的参数和变量③参数和变量不会被垃圾回收机制回收

一、1.什么是闭包,闭包的特征?

当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外执行就产生了闭包.闭包是一个环境,具体指的就是外部函数–高阶函数。

闭包有3个特性:

①函数嵌套函数

②函数内部可以引用函数外部的参数和变量

③参数和变量不会被垃圾回收机制回收


二、定义闭包

定义闭包,完成的功能为:传入一个数求和并输出
# 定义闭包,完成的功能为:传入一个数求和并输出
# 例如: 传入10 ->输出10
# 传入15 ->输出25
# 传入20 ->输出45
def outer_summary():
    sum = 0
    def summary(num):
        nonlocal sum
        sum = sum + num
        print(sum)
    return summary
sum1 = outer_summary()
sum1(10)
sum1(15)
10
25

三、函数装饰器

# 2.定义一个装饰器:打印函数运行花费的时间
# 你在执行之前获取一个时间
# 执行函数
# 在执行函数之后获取一个时间
# 去求时间差
# time模块
# import time
import time
def outer(func):
    def inner(*args, **kwargs):
        time1 = time.time()
        func(*args, *kwargs)
        time2 = time.time()
        print(time2 - time1)
    return inner()
print(time.time())
@outer
def data():
    time.sleep(3)
    print('3')
1657460276.1883776
3
3.0149052143096924

四、类修饰器

class Student:
    def __init__(self, name):
        self._name = name
    def go_info(self):
        return self._name
    @staticmethod
    def print_info():
        print("print_info")
    @classmethod
    def class_method(cls):
        print("This is class method")
    @property
    def data(self):
        return self._name
    @data.setter
    def data(self, value):
        self._name = value
    @data.deleter
    def data(self):
        del self._name
student = Student("a")
Student.class_method()
Student.print_info()
student.class_method()
student.print_info()
print(student.data)
student.data = "dada"
print(student.data)
This is class method
print_info
This is class method
print_info
a
dada


相关文章
|
人工智能 测试技术 计算机视觉
LongLLaVA:香港中文大学推出的多模态上下文混合架构大语言模型
LongLLaVA是由香港中文大学推出的多模态大型语言模型,采用混合架构,结合Mamba和Transformer模块,旨在高效处理大量图像数据。该模型能够在单个A100 80GB GPU上处理多达1000张图像,通过2D池化技术压缩图像token,显著降低计算成本,同时保留关键的空间关系信息。LongLLaVA在视频理解、高分辨率图像分析和多模态代理等应用场景中展现出卓越的性能。
237 5
LongLLaVA:香港中文大学推出的多模态上下文混合架构大语言模型
|
机器人
太空采矿:地球资源枯竭后的替代方案
【10月更文挑战第10天】太空采矿作为地球资源枯竭后的替代方案,具有广阔的前景和潜力。然而,要实现太空采矿的商业化和可持续发展,还需要克服一系列技术、经济和法律挑战。未来,随着技术的不断进步和国际合作的加强,太空采矿将成为人类社会新的资源来源和经济增长点。让我们共同期待太空采矿的美好未来!
|
传感器 监控 安全
基于物联网的智能厨房安全监测系统-下位机程序
基于物联网的智能厨房安全监测系统-下位机程序
327 20
|
存储 容灾 安全
【ESSD技术解读-总篇】 云上企业级存储——打开存储新维度,促进用户核心业务创新
将企业级存储和云的特点进行完美的融合是云上企业级存储的目标,它打开存储更多新的维度,在保障用户业务永续的同时,帮助用户更好的进行业务创新。本文属ESSD技术解读的总篇,总体介绍ESSD 云盘创新融合了云和企业级存储的特性,以服务为中心,为用户提供了更便捷、更智能的存储服务体验。
3075 0
|
JSON 网络协议 JavaScript
如何免费使用阿里云服务器?【一篇文章教会你,真香】
一篇文章教会你如何免费使用阿里云服务器,真香~
1328 0
如何免费使用阿里云服务器?【一篇文章教会你,真香】
|
存储 文件存储 对象存储
阿里云文件存储NAS简介及应用场景
如何使用阿里云文件存储NAS
|
人工智能 数据可视化 机器人
阿里云RPA(机器人流程自动化)干货系列之七:编写第一个RPA应用(可视化模式)
导读:本文是阿里云RPA(机器人流程自动化)干货系列之七,我们采用可视化开发模式编写第一个RPA应用(获取淘宝网宝贝),以及如何实现机器人自动化执行流程的过程。
7728 0
|
存储 Hbase 分布式数据库
面向海量数据的极致成本优化-云HBase的一体化冷热分离
随着业务的持续发展,业务数据库存储量会持续增长。通常数据量过亿时,就需要考虑选择扩展能力更好的NOSQL数据库如HBase,足够满足大多数业务的存储需求。然而,对于大量存储瓶颈类业务,存储成本依然是系统设计中需要关注的重中之重,本文介绍了一种全新的冷热分离一体化方案,0改造成本实现业务冷热分离
5824 0
面向海量数据的极致成本优化-云HBase的一体化冷热分离
|
存储 对象存储
OSS产品Bucket分级的使用场景及注意事项
oss产品允许用户设置三种类型的Bucket,分别是标准(Standard)、低频(IA)、归档(Archive)三级存储类型,Bucket的类型决定了用户Object上传后的默认类型。
4799 0