首页 > 编程语言 >python——闭包与装饰器

python——闭包与装饰器

时间:2024-07-22 19:58:57浏览次数:14  
标签:闭包 fun1 函数 fun2 python time 装饰 datas

闭包与装饰器

1.闭包

 定义闭包的三要素:

外部函数嵌套内部函数

外部函数将内部函数返回

内部函数可以访问外部函数的局部变量

了解三要素之后就可以定义一个闭包了

def fun1(x):#外部函数嵌套fun2

    def fun2():
        print(x)#内部函数访问外部函数的局部变量

    return fun2#外部函数返回内部函数

my_fun = fun1("hello world")
my_fun()
#输出:hello world

闭包可以用来封装数据和行为

2.装饰器:

装饰器可以在不改变原函数结构的前提下,添加额外的功能,提高代码的复用,它可以返回一个新的函数封装原函数里面的功能(和闭包相似)

3.装饰器案例

案例:下面的案例是将一个列表随机10000个数,并且拷贝一个,将两个列表用不同的方法排序,最终使用装饰器判断它们排列使用的时间

import random
import time
   #推导式 随机0-10000的数10000个
datas = [random.randint(0, 10000) for i in range(10000)]
#将datas拷贝一个
datas_copy = datas.copy()

#time_cost函数就是一个装饰器,封装了计算时间的功能
def time_cost(f):
    def calc():
        #获取时间戳
        start = time.time()
        f()
        print(f"{f.__name__} 时间为:{time.time() - start}")

    return calc

@time_cost
def fun1():
    #使用sort排序
    datas.sort()
    print(datas)


# fun1 = time_cost(fun1)
#fun1赋值给装饰器中的形参变量,与上的@使用结果相同
fun1()


@time_cost
def fun2():
    #使用sorted排序
    new_datas = sorted(datas_copy)
    print(new_datas)


# fun2 = time_cost(fun2)
#fun2赋值给装饰器中的形参变量,与上的@使用结果相同
fun2()

标签:闭包,fun1,函数,fun2,python,time,装饰,datas
From: https://blog.csdn.net/zcg203/article/details/140617794

相关文章

  • python函数基础详解
    1.函数的目的在python中使用函数可以减少重复代码,提复用率,目的为了封装一定的功能,比如print封装了打印输出的功能。2.函数的定义是我们在编写程序的时候,临时创建一个新的函数,一个可以重复使用函数的过程,一个简单的函数定义包括,函数名,形参和实参,返回以及调用。3.函数的声明......
  • 《0基础》学习Python——第二十四讲__爬虫/<7>深度爬取
    一、深度爬取        深度爬取是指在网络爬虫中,获取网页上的所有链接并递归地访问这些链接,以获取更深层次的页面数据。        通常,一个简单的爬虫只会获取到初始页面上的链接,并不会进一步访问这些链接上的其他页面。而深度爬取则会不断地获取链接,并继续访问......
  • 【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
    当然,让我们深入探讨Python的datetime模块,详细解释其功能和用法。Pythondatetime模块:时间旅行者的日志在编程中,日期和时间的处理是一个常见但复杂的问题。幸运的是,Python的datetime模块为我们提供了一套全面的解决方案。这个模块不仅包括日期和时间的基本表示,还提供......
  • Python学习-九大数据类型整合,详细讲解
    目录1.int(整型)2.float(浮点型)3.Bool(布尔类型)4.Str(字符串类型)5.None(空值)6.List(列表)7.Tuple(元组)8.Dict(字典)9.Set(集合)(字典,列表,元组,字符串知识点可能不全,可以参考本人之前发的博客进行学习,加油。)1.int(整型)特点和用途:1.可以表示正整数、负整数......
  • Python学习—函数篇 面面俱到,细致讲解
    目录1.函数目的2.函数定义3.函数的调用4.函数的形参,实参5.函数的返回值1.返回一个值2.返回多个值3.没有返回值4.返回None6.函数的参数类型1.必需参数2.关键字参数3.默认参数4.可变参数5.关键字可变参数7.匿名函数基本语法示例1.函数目的在编程中,定......
  • Python—装饰器
    Python装饰器(decorators)是一种强大且灵活的特性,它允许在不修改原有函数代码的情况下,为函数增加新的功能。装饰器本质上是一个函数,它可以接收一个函数作为参数,并返回一个新的函数。这个新函数是对原函数的一种包装或增强。一、示例详解importrandomimporttimedata=[ra......
  • 哔哩哔哩_B站_Bilibili视频弹幕爬取与数据分析python
    ​B站弹幕爬取与数据分析一、项目背景在互联网时代,用户生成内容(UGC)成为了研究社交行为和文化趋势的重要数据来源。B站(哔哩哔哩)作为一个主要的弹幕视频分享平台,聚集了大量的用户评论和互动数据。弹幕作为一种实时的用户反馈形式,具有即时性和高互动性的特点,为数据分析提供了丰富......
  • [oeasy]python0026_调试程序_pdb3_帮助_help_求助_文档
    调试程序_debug_next_下一步_list_pdb3......
  • (三)人工智能之Python入门
    目录(一)环境准备1.1、安装Python1.2、pycharm安装(二)python基础知识2.1、变量和数据类型2.2、列表2.3、字典2.4、元组2.5、循环和条件语句2.6、函数(三)python入门实例 3.1、线性回归任务3.2、线性回归的基本概念1、自变量和因变量:2、线性关系:3、目标4、线性回......
  • python 风云4号云顶温度处理
    根据网上的一些关于风云4号卫星的数据处理方法与本人自己的修改风云4号卫星云顶温度出图代码如下:对于色斑的选择下一步还需要继续修改和精进#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:CTT_map.py@time:2024/06/26@desc:"""importnumpyas......