东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: 东方耀
打印 上一主题 下一主题

[视频教程] 03、python中的装饰器与迭代器_视频

  [复制链接]

0

主题

158

帖子

338

积分

2W人工智能培训

Rank: 10Rank: 10Rank: 10

积分
338
111#
发表于 2018-3-10 16:04:26 | 只看该作者
03、python中的装饰器与迭代器_视频
回复

使用道具 举报

0

主题

100

帖子

212

积分

2W人工智能培训

Rank: 10Rank: 10Rank: 10

积分
212
112#
发表于 2018-3-11 21:24:31 | 只看该作者
python中的装饰器与迭代器_视频
回复

使用道具 举报

0

主题

269

帖子

648

积分

2W人工智能培训

Rank: 10Rank: 10Rank: 10

积分
648
113#
发表于 2018-3-12 10:23:38 | 只看该作者

03、python中的装饰器与迭代器

# 装饰器本质上是一个Python函数 它可以让其他函数在不需要做任何代码变动的前提下增加额外功能
# 装饰器的返回值也是一个函数对象
# 它经常用于有切面需求的场景 比如:插入日志 性能测试  权限判断等
# 有了装饰器 我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用
# 总之 装饰器的作用就是为已经存在的对象添加额外的功能
# -*- coding: utf-8 -*-
__author__ = 'dongfangyao'
__date__ = '2017/12/18 下午4:21'
__product__ = 'PyCharm'
__filename__ = 'decorator1'


def addTips(fun):
    def wrap(*args, **kwargs):
        print('这是操作之前')
        result = fun(*args, **kwargs)
        print('操作结束啦!')
        return result
    return wrap

@addTips
def add(x, y):
    return x+y

print(add(2, 3))
复制代码
# -*- coding: utf-8 -*-
__author__ = 'dongfangyao'
__date__ = '2017/12/18 下午4:29'
__product__ = 'PyCharm'
__filename__ = 'decorator2'

def addTips(i):
    def wrap1(fun):
        def wrap(*args, **kwargs):
            print('这是操作之前')
            result = 0
            if i > 10:
                result = fun(*args, **kwargs)
            else:
                print('对不起,没有执行fun的权限')
            print('操作结束啦!')
            return result
        return wrap
    return wrap1

@addTips(11)
def add(x, y):
    return x+y

print(add(2, 3))

复制代码




# -*- coding: utf-8 -*-
# 迭代器(iterator)
# 可迭代的对象:如果一个对象可以用for in 的方式遍历其内容 就是一个可迭代的对象 list tuple 字典
# 迭代器:遍历可迭代对象内容的方式
# 常见的迭代器:组合 排列 笛卡尔积  串联迭代器可以被next()函数调用的并不断返回下一个值得对象叫做迭代器:iterator
        凡是可以用作与next()函数的对象都是iterator

# -*- coding: utf-8 -*-
__author__ = 'dongfangyao'
__date__ = '2017/12/18 下午4:35'
__product__ = 'PyCharm'
__filename__ = 'iterator1'

# 排列 组合 笛卡尔积 串联迭代器
import itertools
x = range(1, 5)
y = list('abc')
# 排列
com1 = itertools.combinations(x, 3)
#  组合
com2 = itertools.permutations(x, 3)

# 笛卡尔积
com3 = itertools.product(x, y)

# 串联迭代器
com4 = itertools.chain(com1, com2, com3)


for i in com4:
    print(i)



复制代码

可迭代对象与迭代器的区别:通过iter()将一个可迭代对象变成迭代器

list01 = [1,2,3,4,5] #是一个可迭代对象
# for i in list01:
#     print(i)
# print(next(list01))   #list01不是迭代器所以无法调用  next

#通过iter()将一个可迭代对象变成迭代器
a = iter(list01)
print(a)
print(next(a))
print(next(a))
print(next(a))
复制代码
回复

使用道具 举报

0

主题

156

帖子

462

积分

2W人工智能培训

Rank: 10Rank: 10Rank: 10

积分
462
114#
发表于 2018-3-12 20:41:53 | 只看该作者
苔花如米小,也学牡丹开.
回复

使用道具 举报

0

主题

261

帖子

550

积分

高级会员

Rank: 4

积分
550
115#
发表于 2018-3-13 09:50:51 | 只看该作者
下载视频看看
回复

使用道具 举报

0

主题

47

帖子

100

积分

注册会员

Rank: 2

积分
100
116#
发表于 2018-3-13 09:54:21 | 只看该作者
好好學習
回复

使用道具 举报

0

主题

193

帖子

444

积分

2W人工智能培训

Rank: 10Rank: 10Rank: 10

积分
444
117#
发表于 2018-3-13 11:12:09 | 只看该作者
Python高级编程与AI数据分析
回复

使用道具 举报

0

主题

46

帖子

94

积分

注册会员

Rank: 2

积分
94
118#
发表于 2018-3-14 19:34:27 | 只看该作者
y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt y0xt
回复

使用道具 举报

0

主题

5

帖子

12

积分

新手上路

Rank: 1

积分
12
119#
发表于 2018-3-15 09:25:34 | 只看该作者
RE: 03、python中的装饰器与迭代器_视频 [修改]
回复

使用道具 举报

0

主题

130

帖子

298

积分

2W人工智能培训

Rank: 10Rank: 10Rank: 10

积分
298
120#
发表于 2018-3-16 12:36:28 | 只看该作者
1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-20 03:13 , Processed in 0.223343 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表