博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python(72)_生成器函数与装饰器复习
阅读量:5139 次
发布时间:2019-06-13

本文共 2671 字,大约阅读时间需要 8 分钟。

1   装饰器复习,注意打印的顺序

#-*-coding:utf-8-*-import osimport time'''语法糖'''def wrapper(f):  # 装饰器函数 ,f是被装饰的函数    def inner(*args,**kwargs):  # 定义了内部函数,一定和return inner对应        ''' 在被装饰函数执行前要做的事情'''        print('在被装饰函数执行前要做的事情')        ret = f(*args,**kwargs) # 这句话是真正函数的执行        ''' 在被装饰函数执行后要做事情'''        print('在被装饰函数执行后要做事情')        return  ret    return inner@wrapper  #装饰器函数 相当于  func = wrapper(func)def func(day): # 被装饰的函数    time.sleep(0.01)    print('全体放假%s天'%day)    return '好开心'print(func(10))

 


2    聚合与散

def outer(*args,**kwargs):    print(args)  # 元组 (1, 3, 5, 6)    print(*args) # 1 3 5 6  *在print函数里能用,打散。和传参的*作用的等价的    def inner(*args):  # 聚合成1234        print('inner:',args)   #(1, 3, 5, 6)    inner(*args)outer(1,3,5,6)  # = outer(*[1,2,3, 4])#outer(*[1,2,3, 4])

 


3   普通函数

#-*-coding:utf-8-*-import osimport time'''生成器函数'''def generator():    print(1)    return 'a'ret = generator()print(ret)


4、生成器的定义

#-*-coding:utf-8-*-import osimport time'''生成器函数   1、含有yield关键字的函数   2、yield不能和return共用,且需要写在函数内部'''def generator():    print(1)    yield 'a'   # 生成器函数执行后会得到一个生成器作为返回值   
ret = generator()print(ret) # ret.__next__() 迭代器 ,迭代器一般不同,用for循环就可以了print(ret.__next__()) # 触发生成器里面的代码


5、for循环与迭代器和生成器的关系

#-*-coding:utf-8-*-import osimport time'''生成器函数   1、含有yield关键字的函数   2、yield不能和return共用,且需要写在函数内部   3、yield和next配合,迭代器,生成器'''def generator():    print(1)    yield 'a'    print(2)    yield 'b'    yield 'c'# 生成器函数执行后会得到一个生成器作为返回值   
ret = generator() # 这是生成器,上面是生成器函数print(ret)# ret.__next__() 迭代器 ,迭代器一般不同,用for循环就可以了# print(ret.__next__()) # 触发生成器里面的代码# print(ret.__next__())# print(ret.__next__())for i in ret: print(i)


 6、哇哈哈函数

def wahaha():    for i in  range(2000):        yield '哇哈哈%s'%ig = wahaha()  # 生成器count = 0for i in g:    count +=1    print(i)    if count >50:        break;print('*******',g.__next__())


7、方法  __name____doc__

def wahaha():    '''    一个打印哇哈哈的函数    :return:    '''    for i in  range(2000):        yield '哇哈哈%s'%ig = wahaha()  # 生成器count = 0for i in g:     count +=1    # print(i)    # if count >50:    #     break;print('*******',g.__next__())print(wahaha.__name__)print(wahaha.__doc__)


8、方法  __name__ 与 __doc__ 升级

#-*-coding:utf-8-*-import osimport timefrom functools import wraps''''''def wrappper(func):    @wraps(func)  # 固定的,func传进去    def inner(*args,**kwargs):        print("前")        ret = func(*args,**kwargs)        print("后")        return  ret    return inner@wrappper   # 不可少!def holiday(day):    '''    这是一个放假通知    :param day:    :return:    '''    print('全体放假%s天'%day)    return '好开心'holiday(10)print(holiday.__name__)print(holiday.__doc__)

 

转载于:https://www.cnblogs.com/sunnybowen/p/10269217.html

你可能感兴趣的文章
Java泛型的基本使用
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Postman-----如何导入和导出
查看>>
【Linux】ping命令详解
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
【模板】最小生成树
查看>>
网络编程
查看>>
java面试题
查看>>
pair的例子
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
Oracle中包的创建
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
利用IP地址查询接口来查询IP归属地
查看>>