python的装饰器、迭代器、yield_python的装饰器,迭代器,生成器(yield)

装饰器:

不改变home的源码,给它加上添加登录功能呢

写在 被装饰函数 的 正上方 。可提前注明接下来的介绍内容

比如:@property、@classmethod、@staticmethod 、

@关键字

被装饰函数()

deflogin(func):"""在这里从新定义一个高阶函数,

这就是decorator。

我们一会儿会仔细分析。"""

def wrapper(*args, **kwargs):

user= "zingp" #假设这是数据库中的用户名和密码

passwd = "123"username= input("输入用户名:")

password= input("输入密码:")if username == user and password ==passwd:return func(*args, **kwargs)else:print("用户名或密码错误。")returnwrapper

@login#利用python的@语法,把decorator置于home函数的定义处 相当于home = login(home)

defhome():print("欢迎来到XX首页!")

home()

迭代器 (Iterator)

迭代器的特点:访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容,不能随机访问集合中的某个值,只能从头到尾依次访 问,访问到一半不能往后退,便于循环比较大的数据集合,节省内存

迭代器有两种类型:

1.集合数据类型:列表,字典,元组,集合,字符串

2.generator:包括生成器和带有yield的生成函数

生成器 (Generator)

包含 yield 的函数。

yield 与 return 相比,能 多次 返回 值。

定义生成器的方式:

(1)列表生成式的[]改为()

使用for循环进行调用即可

(2)定义yield关键字

如果一个函数定义中包含yield关键字,则这个函数为一个生成器

注意:yield的原理是,在每次进行迭代调用next()时执行,遇到yield语句返回,下次执行时从上次返回的yield语句处继续执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值