2017.11.20 裝飾器

說下對(duì)python深淺拷貝的理解。并有代碼簡單實(shí)現(xiàn)

淺拷貝是對(duì)于一個(gè)對(duì)象的頂層拷貝,通俗的理解是:拷貝了引用暑始,并沒有拷貝內(nèi)容

copy.copy

內(nèi)層地址一樣

外層地址:

1廓握、如果是可變芋忿,地址不同

2炸客、如果是不可變,地址相同

深拷貝是對(duì)于一個(gè)對(duì)象所有層次的拷貝(遞歸)

只有一層深淺拷貝沒區(qū)別:都是

1戈钢、如果是可變,地址不同

2是尔、如果是不可變殉了,地址相同

copy.deepcopy

1、如果所有層都是不可變的拟枚,所有層地址相同

2薪铜、如果有一個(gè)可變的,外層一定不同

3恩溅、如果內(nèi)層中這一層是可變的隔箍,地址不同。否則脚乡,地址相同

二者地址一樣蜒滩,指向同一個(gè)

a?=?[1,2,3]

b?=?a

a.append(4)

a?=?[1,2,3,4]b?=?[1,2,3,4]

id相同

a?=?[1,2,3]

b?=?coop.deepcooy(a)

a.append(4)

a?=?[1,2,3,4]b?=?[1,2,3]

id不同

2.簡答

說下對(duì)生成器的理解,有幾種創(chuàng)建方式奶稠,并用代碼簡單實(shí)現(xiàn)俯艰。

如果數(shù)據(jù)量比較大,想辦法以某種算法锌订,進(jìn)行推算出數(shù)據(jù)竹握。將推算的算法保存起來,以后通過算法計(jì)算出下一個(gè)數(shù)據(jù),這樣就避免了一次性占用過多內(nèi)存

在Python中辆飘,這種一邊循環(huán)一邊計(jì)算的機(jī)制啦辐,稱為生成器:generator

可以通過next()函數(shù)獲得生成器的下一個(gè)返回值

要?jiǎng)?chuàng)建一個(gè)生成器,有三種方法蜈项。

1把一個(gè)列表生成式的[?]改成(?),列表生程式

ge1=(i?for?i?in?range(0,100,5))

print(next(ge1))

for?i?in?ge1:

print(i)

2芹关、在方法中使用yield形式保存算法

def?fib(num):

a,b?=?0,1

while?num>1:

print('1....')

yield?b??#返回值前面加yield

print('2.....')

a,b?=?b,a+b

num-=1

print('3....')

ge?=?fib(300)

print(ge)??#第一次調(diào)用函數(shù)時(shí),發(fā)現(xiàn)yield,不執(zhí)行,返回一個(gè)對(duì)象地址

print(next(ge))??#通過next獲取生成器中保存算法的每一個(gè)值

print(next(ge))

print(next(ge))

print(next(ge))

print(next(ge))

print(next(ge))

3.簡答

說下對(duì)迭代器的理解,并用代碼簡單實(shí)現(xiàn)战得。

迭代器是一個(gè)可以記住遍歷的位置的對(duì)象充边。迭代器對(duì)象從集合的第一個(gè)元素開始訪問,直到所有的元素被訪問完結(jié)束常侦。迭代器只能往前不會(huì)后退浇冰。可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator聋亡。

可以使用isinstance()判斷一個(gè)對(duì)象是否是Iterator對(duì)象.

from?collections?import?Iterable,Iterator

def?f():

yield?'hello'

print(isinstance(f(),Iterable))

print(isinstance(f(),Iterator))

print(isinstance('abc',Iterable))

print(isinstance('abc',Iterator))

name?=?'abc'

myIter?=?iter(name)

print(type(myIter))

print(isinstance(myIter,Iterator))

try:

print(next(myIter))

print(next(myIter))

print(next(myIter))

print(next(myIter))

print(next(myIter))

print(next(myIter))

except?StopIteration?as?ex:

print('迭代完了,%s'%ex)

4.簡答

說下對(duì)裝飾器的理解肘习,并用代碼簡單實(shí)現(xiàn)。

寫代碼要遵循開放封閉原則坡倔,雖然在這個(gè)原則是用的面向?qū)ο箝_發(fā)漂佩,但是也適用于函數(shù)式編程脖含,簡單來說,它規(guī)定已經(jīng)實(shí)現(xiàn)的功能代碼不允許被修改投蝉,但可以被擴(kuò)展养葵,即:

封閉:已實(shí)現(xiàn)的功能代碼塊

開放:對(duì)擴(kuò)展開發(fā)

@函數(shù)名?是python的一種語法糖。

def?outer(func):

print('outer...')

def?inner():

ret?=?input('洗手了嗎?')

if?ret?==?'yes':

func()

else:

print('洗手去')

return?inner???#加小括號(hào)是調(diào)用函數(shù),執(zhí)行程序

@outer???#原函數(shù)

def?myFunc1():????#myFunc1這個(gè)名字指向

print('吃飯....')

@outer

def?myFunc2():

print('睡覺....')

myFunc1()

#?decorate?=?outer(myFunc)

#?print(decorate)???#decorate指向返回值outer里的innner

#?print('**********************')

#?decorate()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘩缆,一起剝皮案震驚了整個(gè)濱河市关拒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庸娱,老刑警劉巖着绊,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熟尉,居然都是意外死亡归露,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門斤儿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剧包,“玉大人,你說我怎么就攤上這事雇毫⌒叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵棚放,是天一觀的道長枚粘。 經(jīng)常有香客問我,道長飘蚯,這世上最難降的妖魔是什么馍迄? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮局骤,結(jié)果婚禮上攀圈,老公的妹妹穿的比我還像新娘。我一直安慰自己峦甩,他們只是感情好赘来,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凯傲,像睡著了一般犬辰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冰单,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天幌缝,我揣著相機(jī)與錄音,去河邊找鬼诫欠。 笑死涵卵,一個(gè)胖子當(dāng)著我的面吹牛浴栽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轿偎,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼典鸡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贴硫?” 一聲冷哼從身側(cè)響起椿每,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎英遭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亦渗,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挖诸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了法精。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片多律。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搂蜓,靈堂內(nèi)的尸體忽然破棺而出狼荞,到底是詐尸還是另有隱情,我是刑警寧澤帮碰,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布相味,位于F島的核電站,受9級(jí)特大地震影響殉挽,放射性物質(zhì)發(fā)生泄漏丰涉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一斯碌、第九天 我趴在偏房一處隱蔽的房頂上張望一死。 院中可真熱鬧,春花似錦傻唾、人聲如沸投慈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伪煤。三九已至,卻和暖如春猴抹,著一層夾襖步出監(jiān)牢的瞬間带族,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工蟀给, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝙砌,地道東北人阳堕。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像择克,于是被迫代替她去往敵國和親恬总。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 包(lib)肚邢、模塊(module) 在Python中壹堰,存在包和模塊兩個(gè)常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,805評(píng)論 0 27
  • 迭代器和生成器 楔子 假如我現(xiàn)在有一個(gè)列表l=['a','b','c','d','e'],我想取列表中的內(nèi)容响蕴,有幾...
    go以恒閱讀 754評(píng)論 1 4
  • 小小的探索了一下簡書markdown 獻(xiàn)給寫作者的 Markdown 新手指南 探索新發(fā)現(xiàn) 六個(gè)空格進(jìn)入代碼模式:...
    _時(shí)間滴答閱讀 640評(píng)論 0 2
  • 今晚聽李志聽哭 也是很里程碑了 以及男人都真的是狗吧 也真是無語
    白糖蛋黃閱讀 113評(píng)論 0 0
  • 無意中在書里看到一句話,淺青色的黎明劈狐,風(fēng)把天刮凈了罐孝,幾顆小星星,彎刀一樣的月亮肥缔,斜釘在天上莲兢。 這幾句話,只是普通的...
    無名氏星球閱讀 247評(píng)論 0 3