前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python扩展内容

Python扩展内容

作者头像
Python知识大全
发布2020-02-13 14:17:37
5550
发布2020-02-13 14:17:37
举报
文章被收录于专栏:Python 知识大全Python 知识大全

Python扩展内容

阅读本文需要3分钟

① python中yield关键字的使用:

  • yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器
  • 当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象
  • 当你使用for进行迭代的时候,函数中的代码才会执行
  • 生成器特点:可迭代;只能读取一次;实时生成数据,不全存在内存中。
代码语言:javascript
复制
def fun():
    yield "aaa"
    yield "bbb"
    yield "ccc"

#返回可迭代对象(生成器)
a = fun()
print(a) # <generator object fun at 0x10f26e990>

#可以将迭代对象转成列表
# b = list(a)
# print(b) #['aaa', 'bbb', 'ccc']

#遍历(迭代)输出,注意:只能读取一次
for i in a:
    print(i)

'''
aaa
bbb
ccc
'''
  • 案例:
代码语言:javascript
复制
import json

#案例一、这是一段过程化代码编写:
str= '[{"name":"zhangsan","age":22},{"name":"lisi","age":19},{"name":"wangwu","age":24}]'
data = json.loads(str) #解码JSON数据
# 过滤出年龄大于20岁以上的信息,并输出
for item in data:
    if item['age']>20:
        #输出数据
        print('-' * 20)
        print(item['name'],":",item['age'])

'''
#输出结果:
--------------------
zhangsan : 22
--------------------
wangwu : 24
'''

#案例二:代码拆分(将数据的处理封装成函数):
def fun1():
    str= '[{"name":"zhangsan","age":22},{"name":"lisi","age":19},{"name":"wangwu","age":24}]'
    data = json.loads(str) #解码JSON数据
    #过滤出年龄大于20岁以上的信息,并输出
    dlist = []
    for item in data:
        if item['age']>20:
            #将过滤出来的数据放置到dlist中
            print('-' * 20)
            dlist.append(item)

    return dlist

# 使用(输出数据)
for i in fun1():
    print(i['name'], ":", i['age'])


'''
#输出结果:
--------------------
--------------------
wangwu : 24
wangwu : 24
'''

#案例三:代码拆分(使用yield返回生成器):
def fun1():
    str= '[{"name":"zhangsan","age":22},{"name":"lisi","age":19},{"name":"wangwu","age":24}]'
    data = json.loads(str) #解码JSON数据
    #过滤出年龄大于20岁以上的信息,并输出
    for item in data:
        if item['age']>20:
            #将过滤出来的数据放置到dlist中
            print('-' * 20)
            yield item

# 使用(输出数据)
for i in fun1():
    print(i['name'], ":", i['age'])


'''
#输出结果:
--------------------
zhangsan : 22
--------------------
wangwu : 24

'''

② 装饰器的使用:

  • python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,
  • 使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能
  • 无参数的装饰器实例
代码语言:javascript
复制
# 无参数的装饰器实例
def deco(dd):
    def _deco():
        print("start....")
        dd()
        print("end.....")
    return _deco

@deco
def demo():
    print("demo()............")


if __name__ == "__main__":
    d = demo
    d()
    #demo()
  • 输出结果
代码语言:javascript
复制
start....
demo()............
end....
代码语言:javascript
复制
# 带参数的装饰器实例
def deco(func):
    def _deco(a, b):
        print("before myfunc() called.")
        ret = func(a, b)
        print("  after myfunc() called. result: %s" % ret)
        return ret
    return _deco

@deco
def myfunc(a, b):
    print(" myfunc(%s,%s) called." % (a, b))
    return a + b

if __name__ == "__main__":
    myfunc(1, 2)
    myfunc(3, 4)
  • 输出结果
代码语言:javascript
复制
before myfunc() called.
 myfunc(1,2) called.
  after myfunc() called. result: 3
before myfunc() called.
 myfunc(3,4) called.
  after myfunc() called. result: 7

岁月有你,惜惜相处

发现更多精彩

关注公众

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 知识大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ① python中yield关键字的使用:
  • ② 装饰器的使用:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档