闭包,类装饰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


相关文章
|
10月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
279 31
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在现实世界中的应用:从理论到实践
【10月更文挑战第8天】人工智能在现实世界中的应用:从理论到实践
470 0
|
移动开发 算法 机器人
DingTalk「开发者说」- 开发钉钉酷应用集成入门
本篇主要分享钉钉酷应用的群应用开发流程和实践。
DingTalk「开发者说」- 开发钉钉酷应用集成入门
|
搜索推荐 算法 数据挖掘
推荐系统概念和应用场景|学习笔记
快速学习推荐系统概念和应用场景
770 0
推荐系统概念和应用场景|学习笔记
|
数据可视化 数据管理 BI
员工管理系统综合实践 | 学习笔记
快速学习员工管理系统综合实践,介绍了员工管理系统综合实践系统机制, 以及在实际应用过程中如何使用。
员工管理系统综合实践 | 学习笔记
|
JSON 网络协议 JavaScript
如何免费使用阿里云服务器?【一篇文章教会你,真香】
一篇文章教会你如何免费使用阿里云服务器,真香~
1277 0
如何免费使用阿里云服务器?【一篇文章教会你,真香】
|
存储 文件存储 对象存储
阿里云文件存储NAS简介及应用场景
如何使用阿里云文件存储NAS
阿里云服务器快速搭建自己的个人网站
现在作为一个IT程序猿,没有一个自己的个人网站怎么行呢,现在就连许多不是IT人员都会搭建自己的个人网站 。那作为一个IT人员,如果别人让你帮忙搭建一下网站,然而你却没玩过,说不会,岂不是很尴尬 。另外,如果你自己会搭建网站,说不定还能赚取点额外的广告收入呢 。
36638 1
|
存储 Hbase 分布式数据库
面向海量数据的极致成本优化-云HBase的一体化冷热分离
随着业务的持续发展,业务数据库存储量会持续增长。通常数据量过亿时,就需要考虑选择扩展能力更好的NOSQL数据库如HBase,足够满足大多数业务的存储需求。然而,对于大量存储瓶颈类业务,存储成本依然是系统设计中需要关注的重中之重,本文介绍了一种全新的冷热分离一体化方案,0改造成本实现业务冷热分离
5705 0
面向海量数据的极致成本优化-云HBase的一体化冷热分离