python装饰器\迭代器\生成器

1.迭代器\生成器

# 斐波那契数列

def fib(n):
    """
    生成斐波那契数列的前n个数字。

    参数:
    n -- 要生成的斐波那契数列的长度

    返回:
    生成器,产出斐波那契数列的前n个数字。
    """
    a, b = 0, 1  # 初始化斐波那契数列的前两个数字
    content = 0  # 初始化已生成的数字数量
    while True:
        if content >= n:  # 当生成的数字数量达到指定长度时,退出循环
            break
        a, b = b, a + b  # 计算下一个斐波那契数字
        yield a  # 产出当前数字并暂停函数执行
        content += 1  # 已生成数字数量加一

# 创建一个斐波那契数列的生成器,旨在生成极大的斐波那契数列
gen = fib(100000000000000000000)

for i in gen:
    if i > 1000:  # 当生成的斐波那契数字大于1000时,退出循环
        break
    print(i)  # 输出当前斐波那契数字

2.装饰器

# 导入time模块,用于计时功能
import time

# 定义登录验证装饰器
def logincheck(func):
    # 定义内嵌函数,用于包裹被装饰的函数
    def inner(*args, **kwargs):
        # 打印登录验证信息
        print("登录验证")
        # 调用被装饰的函数
        func(*args, **kwargs)
    # 返回内嵌函数
    return inner

# 定义计时装饰器
def timecheck(func):
    # 定义内嵌函数,用于包裹被装饰的函数
    def inner():
        # 调用被装饰的函数
        func()
        # 打印当前时间
        print("计时", time.time())
    # 返回内嵌函数
    return inner

# 使用登录验证装饰器
@logincheck
# 使用计时装饰器
# @timecheck
# 定义受装饰器影响的函数fun1
def fun1(x):
    # 打印传入的参数x
    print("fun1", x)

# 使用登录验证装饰器
@logincheck
# 定义受装饰器影响的函数fun2
def fun2(x, y, **kwargs):
    # 打印传入的参数x和y
    print("fun2", x, y)
    # 打印传入的kwargs参数
    print(kwargs)


# 调用fun1函数,传入参数'abc'
fun1('abc')
# 调用fun2函数,传入参数'hello', 'py'以及关键字参数a=1, b=2, c=3
fun2('hello', 'py', a=1, b=2, c=3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值