Python基础14—Python函数进阶(装饰器&生成器&迭代器)(2022年)

【Python进阶】三大利器:迭代器,生成器,装饰器 【代码】【Python三大利器】迭代器,生成器,装饰器。 阅读详情


1. 装饰器

使用:装饰器其实就是一个函数,该函数有一个参数(函数类型),返回一个闭包。在返回的闭包中调用传递进来的函数,然后在调用函数的前后就可以添加内容

account = {
    "is_authenticated":False,# 用户登录了就把这个改成True
    "username":"Py小白雨", # 假装这是DB里存的用户信息
    "password":"123456" # 假装这是DB里存的用户信息
}
def login(func):
    def inner(*args,**kwargs): # 再定义一层函数
        if account["is_authenticated"] is False:
            username = input("user:")
            password = input("pasword:")
            if username == account["username"] and password == account["password"]:
                print("welcome login....")
                account["is_authenticated"] = True
            else:
                print("wrong username or password!")
        if account["is_authenticated"] is True:
            func(*args,**kwargs)
    return inner  # 注意这里只返回inner的内存地址,不执行

@login
def video(vip_level):
    if vip_level < 3:
        print("----视频普通会员----")
    else:
        print("尊贵的vip用户".center(50,"-"))

video(5)

2. 生成器

在Python中,一边循环一边计算后面元素的机制,称为生成器:generator。

print([x * x for x in range(10)])
print((x * x for x in range(10)))
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# <generator object <genexpr> at 0x0000025B4287B6D8>

因为 generator 也是可迭代(遍历)对象,所以可以用for循环来进行遍历

g = (x * x for x in range(10))
for i in g:
    print(i)

著名的斐波拉契数列(Fibonacci)

# 输出前100 的斐波拉契数列
def fib(max):
    a,b = 0,1
    n = 0  # 斐波那契数
    while n < max:
        n = a + b
        a = b # 把b的旧值给到a
        b = n # 新的b = a + b(旧b的值)
        print(n)
fib(100)

3. 迭代器

直接作用于for循环的数据类型有以下几种:

  • 集合数据类型,如list、tuple、dict、set、str等;

  • generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

使用isinstance()判断一个对象是否是Iterator对象

TI 实时操作系统SYS/BIOS使用总结 1:概述: SYS/BIOS 是一个可扩展的实时的操作系统。具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片)。能够实现系统的模块化并可裁剪。 最大的特点就是:实时。 2:XDCtools: XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的AP 阅读详情

相关推荐

避开奸商套路!手把手教你用Thaiphoon Burner和CPU-Z,一眼看穿内存SPD信息有没有被篡改

本文教你使用Thaiphoon Burner和CPU-Z工具,快速识别内存SPD信息是否被篡改,避免购买到虚标频率或假冒颗粒的内存条。通过详细步骤和实战案例,帮助用户掌握内存检测技巧,确保硬件购买的透明度和安全性。

weixin_32228501的博客 683

14.Python生成器、迭代器、闭包、装饰器、元类、垃圾回收、内建函数

生成器:使用 yield 返回一个惰性计算的迭代器,节省内存。 迭代器:实现了 __iter__ 和 __next__ 方法的对象,支持遍历。 闭包:函数可以记住并访问其定义时的外部变量。 装饰器:用于动态修改函数或方法行为的函数。 元类:用于创建类的类,可以修改类的创建过程。 垃圾回收:Python 使用自动垃圾回收机制管理内存,用户无需手动管理对象的内存。 内建函数:Python 提供了多种内建函数来处理常见的任务,如计算长度、排序、映射等。

DataCrafter的博客 641

数字孪生在智慧医疗中的5个创新应用:从手术模拟到个性化治疗

数字孪生技术通过创建患者或医疗流程的动态虚拟映射,正在深刻变革智慧医疗。本文重点剖析了其在个性化治疗、手术模拟与导航、药物研发、医院管理优化及慢性病管理五大核心场景的创新应用,展现了如何利用智能映射与数据融合,为精准医疗和高效决策提供强大支持。

weixin_29189003的博客 443

【Python零基础到进阶】装饰器与生成器

【Python零基础到进阶】装饰器与生成器

m0_75067840的博客 939

华为Atlas 300I推理卡驱动安装避坑指南:不同安装方式的选择与优化

本文详细解析华为Atlas 300I推理卡驱动安装的三种主流方式(.run、.rpm和源码编译),提供关键环境检查步骤、安装流程优化建议及常见问题解决方案,帮助开发者高效完成芯片推理卡部署并规避典型安装陷阱。

q9w8e7r6t5的博客 432

手把手教你用STM32CubeMX和HAL库驱动DW3000:从SPI配置到第一个测距Demo

本文详细介绍了如何使用STM32CubeMX和HAL库驱动DW3000 UWB定位通信模块,从SPI配置到实现厘米级测距Demo的全过程。涵盖硬件连接、SPI通信调试、驱动移植及双向测距(TWR)算法实现,帮助开发者快速掌握UWB高精度定位技术,适用于仓储物流、智能家居等场景。

weixin_27038245的博客 485

Python三 —— Python迭代器、生成器、装饰器

Python三 —— Python迭代器、生成器、装饰器

weixin_43662553的博客 817

C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

int转换为float类型为什么会发生精度损失? 精度损失的详细过程究竟是什么样的? 什么样情况float会发生精度损失?没有弄懂2017年浮点数统考大题? 这一篇用2017年统考大题案例帮你更深的理解浮点数的存储规则。

DADONGOOO的博客 1万+

Python3 学习笔记5-推导式、迭代器和生成器、函数、装饰器、数据结构、模块、输入输出和文件操作方法

【代码】Python3 学习笔记5-推导式、迭代器和生成器、函数、装饰器、数据结构、模块、输入输出和文件操作方法。

The_xz的博客 2000

YOLOv8 | 损失函数改进,最新提出的Shape-IoU,有效涨点

作为检测器定位分支的重要组成,边框回归损失在目标检测任务中发挥巨大作用。现有的边框回归方法,通常考虑了GT框与预测框之间的几何关系,通过使用边框间的相对位置与相对形状等计算损失,而忽略了边框其自身的形状与尺度等固有属性对边框回归的影响。为了弥补现有研究的不足,本文提出聚焦边框自身形状与尺度的边框回归方法。首先我们对边框回归特性进行分析,得出边框自身形状因素与尺度因素会对回归结果产生影响。

kay_545 1913

【小白深度教程 1.8】手把手教你使用 Depth Anything V2 估计单目深度,并映射到 3D 点云(含 Python 代码)

我们尝试使用单目深度估计技术(Depth Anything V2),来进行准确的双目深度估计,并将场景转换成 3D 点云,Python 代码在最后。

2401_87064292的博客 5090

python中的装饰器,迭代器,生成器

文章目录前言一、装饰器二、使用步骤1.引入闭包概念2.装饰器的使用方法总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 简要介绍 装饰器,迭代器以及生成器,以下内容仅供参考 一、装

qq_41899015的博客 459

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

函数进阶——闭包,装饰器,生成器,迭代器

闭包 函数定义和函数表达式位于另一个函数的函数体内(嵌套函数)。而且,这些内部函数可以访问他们所在的外部函数中声明的所有局部变量、参数。当其中一个这样的内部函数在包含他们的外部函数之外被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外...

190

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python 黑科技之迭代器、生成器、装饰器

概述 可迭代对象、迭代器和生成器这三个概念很容易混淆,前两者通常不会区分的很明显,只是用法上有区别。生成器在某种概念下可以看做是特殊的迭代器,它比迭代实现上更加简洁。三者关系如图: Iterator,Generator 可迭代对象 先说下上面三者的基础:可迭代对象(Iterable Object),简单的来理解就是可以使用for来循环遍历的对象。比如常见的 list、set和dic...

Python零基础学习 263

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

生成器、装饰器、迭代器

生成器 一个函数在调用时返回一个迭代器,那这个函数就叫做生成器,可以被next()函数调用并且不断返回下一个值 优点: 一边循环,一边计算数据,节约内存 如:列表的数据会被全部加在到内存,然后可以通过下标进行访问数据,如果我们要的数据量非常大呢,岂不是很占用内存,所以我们需要生成器。 生成器的创建: (1)第一种方法很简单,只要把一个列表生成式的 [ ] 改...

feizai1208917009的博客 159
上一篇: Python基础13—Python函数进阶(内置函数&名称空间&闭包&列表生成式)(2022年)
下一篇: Python基础15—Python常用模块(常用模块的介绍及导入)(2022年)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值