python记录<2>

 生成器函数

生成器函数使用yield返回返回值。函数并没有结束,还可以继续执行。

生成器一次返回一个(组)数据。

def func1():
        yield"h"
        yield"e"
        yield"l"
        yield"l"
        yield"o"
gen =func1()              

生成器对象

循环生成器对象时,一次获取一个值。

for i in gen:
        print(i)

将生成器对象强制类型转换为列表

#print(list(gen)

print(next(gen))         # "h"
print("123456")
print(next(gen))         # "e"
print("abcdef")
for i in gen:
        print(i,end=" ")        # "l" "l" "o"

元组生成器

gen1 = (2 ** i for i in range(1,65) )
print(gen1)
print(list(gen1))

生成器的使用场景: 产生或处理大量数据,使用生成器一个一个的处理(生成),用于节省内存空间。

  • range(100) 产生某个范围内的整数。

斐波那契序列(兔子序列)

  • 0   1   1   2   3   5   8   13   21   34   55   89   144   233  
def feibo(n):
        a,b,s = 0,1,1
        while s < n:
                s += 1
                yield a        #返回数据不会结束函数
                a,b = b,a+b
for i in feibo(10000):
        print(i)
input()

装饰器函数

定义:在不修改原函数代码的前提下,给原函数增加或修改功能,可以使用使用装饰器函数。

  1. 它是一个高阶函数。
  2. 将原函数作为参数,放到装饰器内部定义的函数中执行。
  3. 在内部函数中增加新的功能。
  4. 返回内部函数用于替换原函数。
def tools(func):
        def inter(*args,**kwargs):
                print("开始执行...")
                res = func(*args,**kwargs)
                print("结束执行...")
                return res
       return inter
@tools    #装饰器语法   func = tools(func1)
def func1():
        for i in range(10):
                print(i,end=" ")
        print()
func1()

获取某个函数运行n次的平均时间,使用装饰器函数实现它。

带参数的装饰器函数

def run_time_test(n):
        def run_time(func):
                def inter(*args,**kwargs):
                        start_time = time.time()    #获取时间戳
                        for i in range(n):
                            temp_tim = time.time()
                            res = func(*args,**kwargs)
                            print("第{}次执行时长时间:{}".format(i+1,time.time()-temp_tim))
                        print("运行{}次的平均时长:{}".format(n,(time.time()-start_time)/n))
                        return res
                return inter
        return run_time
@tools
@run_time_test(10)        #  run_time_test(10)(func2)(m)
def func2(m):
        s = 0
        for i in range(m):
                for j in range(m):
                        s +=1
        return s
print("函数执行的结果:",func2(1000))
#装饰器函数的使用场景:框架中定义特定功能的函数,日志,验证,权限的管理。
input()
            

#装饰器函数的使用场景:框架中定义特定功能的函数,日志,验证,权限的管理。

这次的分享就到此结束啦!加油,代码人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值