深浅copy生成器迭代器装饰器

   ..# 浅拷贝是对于一个对象的顶层拷贝

# 拷贝了引用,并没有拷贝内容,在某种情况下可以随着变对象的更改而改变

# 深拷贝是对于一个对象所有层次的拷贝(递归),拷贝下来就改不了了,当做克隆来理解就是说不再和原来的对象有瓜葛,只是长得像而已.

# 列表,字符串,元组的切片操作属于浅copy

# 字典的copy有深浅两种

# # 切片的例子:

# l=[32,442342,4234,4234,[1,2]]

# l1=l[1:]

# print(l1)

# l[-1].append(3)

# print(l,l1)

# #字典的copy

# import copy

# D={

#    'a':[2,3],

#    'b':5,

#    'c':6

# }

# C1=copy.copy(D)

# C2=copy.deepcopy(D)

# D['a'][1]=4

# print(D,C1,C2)

#

# print(D,C1,C2)

# #深浅拷贝,即可用于序列,也可用于字典

#    >>> import copy

#    >>> X = copy.copy(Y)      #浅拷贝:只拷贝顶级的对象,或者说:父级对象

#    >>> X = copy.deepcopy(Y)  #深拷贝:拷贝所有对象,顶级对象及其嵌套对象。或者说:父级对象及其子对象

# 【结论】

# 深浅拷贝都是对源对象的复制,占用不同的内存空间

# 如果源对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象

# 如果源对象不止一级目录的话,源做任何改动,都要影响浅拷贝,但不影响深拷贝

# 序列对象的切片其实是浅拷贝,即只拷贝顶级的对象

#

#

# 生成器是用来节省内存,简化程序冗余度的一种函数.可以用来完成协程

# 带有 yield 关键字的的函数在 Python 中被称之为 generator(生成器)。Python 解释器会将带有 yield 关键字的函数视为一个 generator 来处理。一个函数或者子程序都只能 return 一次,但是一个生成器能暂停执行并返回一个中间的结果 —— 这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行。

# 在 for 循环语句执行时,才会执行 fab() 函数的代码块。

# 执行到语句 yield b 时,fab() 函数会返回一个迭代值,直到下次迭代前,程序流会回到 yield b 的下一条语句继续执行,然后再次回到 for 循环,如此迭代直到结束。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。

# 由此可以看出,生成器通过关键字 yield 不断的将迭代器返回到内存进行处理,而不会一次性的将对象全部放入内存,从而节省内存空间。从这点看来生成器和迭代器非常相似,但如果更深入的了解的话,其实两者仍存在区别。

# 生成器和迭代器的区别

#

#r# 生成器的另一个优点就是它不要求你事先准备好整个迭代过程中所有的元素,即无须将对象的所有元素都存入内存之后,才开始进行操作。生成器仅在迭代至某个元素时才会将该元素放入内存,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的类序列对象,EG. 大文件/大集合/大字典/斐波那契数列等。这个特点被称为 延迟计算 或 惰性求值(Lazy evaluation),可以有效的节省内存。惰性求值实际上是现实了协同程序 的思想。

#

# 协同程序:是一个可以独立运行的函数调用,该调用可以被暂停或者挂起,之后还能够从程序流挂起的地方继续或重新开始。当协同程序被挂起时,Python 就能够从该协同程序中获取一个处于中间状态的属性的返回值(由 yield 返回),当调用 next() 方法使得程序流回到协同程序中时,能够为其传入额外的或者是被改变了的参数,并且从上次挂起的下一条语句继续执行。这是一种类似于进程中断的函数调用方式。这种挂起函数调用并在返回属性中间值后,仍然能够多次继续执行的协同程序被称之为生成器。

#

# NOTE:而迭代器是不具有上述的特性的,不适合去处理一些巨大的类序列对象,所以建议优先考虑使用生成器来处理迭代的场景。

# 两种创建方式:

# (i for i in range(9))

# 和 yield

# 用生成器来写兔子函数

# def fib(max):

#    n,a,b=0,0,1

#    while n

#        yield b

#        a,b=b,a+b

#        n+=1

# f=fib(10)

# print(next(f))

# print(next(f))

# print(next(f))

#

# 迭代器

# 迭代器是个很好用的函数,使得遍历,查找很便捷

# 可以直接作用于for循环的对象统称为可迭代对象(Iterable)。

#

# 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)。

#

# 所有的Iterable均可以通过内置函数iter()来转变为Iterator。

#

# 对迭代器来讲,有一个__next()就够了。在你使用for 和 in 语句时,程序就会自动调用即将被处理的对象的迭代器对象,然后使用它的next__()方法,直到监测到一个StopIteration异常。

#

# 迭代器是一次性的,可以用deepcopy来保存重用

# s=[1,2]

# d=iter(s)

# import copy

# c=copy.deepcopy(d)

# print(next(d))

# print(next(d))

# print(next(c))

# print(next(c))

# 装饰器

# 装饰器,功能就是在运行原来功能基础上,加上一些其它功能,比如权限的验证,比如日志的记录等等。不修改原来的代码,进行功能的扩展。

# 比如java中的动态代理,python的注解装饰器

# 其实python的装饰器,是修改了代码。

#

# 原理也就是通过闭包的形式把需要修改的函数拿出来修改后还原再放回去.

# 装饰器(decorator)功能

# 引入日志

# 函数执行时间统计

# 执行函数前预备处理

# 执行函数后清理功能

# 权限校验等场景

# 异常的处理

# 缓存

# def getge(num):

#    def ge(func):

#        def inner():

#            print(num)

#            print('修葺内容')

#            func()

#        return inner

#    return ge

#

# @getge(2356)

# def f():

#    print(1111)

# f()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容