python小記

refer:https://mp.weixin.qq.com/s?__biz=MzA4NjA4MTkzMw==&mid=2651987776&idx=3&sn=cb7c00da586a69d42ec0e4c66f500ec2&scene=0#wechat_redirect

  • 生成器不保留迭代過后的結(jié)果

仔細(xì)看拴魄,發(fā)現(xiàn)(i for i in range(5))生成的是迭代器不是tuple喲佛寿。

In [12]: gen = (i for i in range(5))

In [13]: 2 in gen
Out[13]: True

In [14]: 3 in gen
Out[14]: True

In [15]: 1 in gen
Out[15]: False # 1為什么不在gen里面了? 因?yàn)檎{(diào)用1->2,這個(gè)時(shí)候1已經(jīng)不在迭代器里面了,被按需生成過了

In [20]: gen = (i for i in range(5))
In [21]: a_list = list(gen) # 可以轉(zhuǎn)化成列表诗力,當(dāng)然a_tuple = tuple(gen) 也可以

In [22]: 2 in a_list
Out[22]: True

In [24]: 1 in a_list # 就算循環(huán)過,值還在
Out[24]: True
  • lambda在閉包中會(huì)保存局部變量
my_list = [lambda: i for i in range(5)]
for l in my_list:
    print l()

4
...
4

其實(shí)就是當(dāng)我賦值給my_list的時(shí)候郁竟,lambda表達(dá)式就執(zhí)行了i會(huì)循環(huán)蚂四,直到 i =4,i會(huì)保留
但是可以用生成器蒿柳,代碼如下:

my_gen = (lambda: n for n in range(5))
for l in my_gen:
    print(l())

0
1
2
3
4

也可以堅(jiān)持用list舅列,代碼如下:

my_list = [lambda x=i: x for i in range(5)] # 看我給每個(gè)lambda表達(dá)式賦了默認(rèn)值
for l in my_list:
    print(l())

0
1
2
3
4

-重用全局變量

def foo():
# 函數(shù)作用域里定義了一個(gè)本地變量var(var = "local"),而這里是定義之前就使用了var,python解釋器在這里會(huì)認(rèn)為沒有定義本地變量
# 注意這種情況下去調(diào)用print var時(shí),不會(huì)把var看做全局變量了声滥,因?yàn)閜ython解釋器是先查局部變量眉撵,找不到才使用全局變量,而這里局部變量是有的
    print var 
    var = "local"

var = "global"
foo()
------------------------------------------------
UnboundLocalErrorTraceback (most recent call last)
<ipython-input-46-624891b0d01a> in <module>()
----> 1 foo()

<ipython-input-43-373dd100efad> in foo()
      1 def foo():
----> 2     print var
      3     var = 32
      4

UnboundLocalError: local variable 'var' referenced before assignment

函數(shù)作用域里定義了一個(gè)本地變量var(var = "local"),而這里是定義之前就使用了var,python解釋器在這里會(huì)認(rèn)為沒有定義本地變量
注意這種情況下去調(diào)用print var時(shí),不會(huì)把var看做全局變量了纽疟,因?yàn)閜ython解釋器是先查局部變量罐韩,找不到才使用全局變量,而這里局部變量是有的
其實(shí)污朽,可以在函數(shù)里用global關(guān)鍵字注明使用的是全局變量伴逸,不過這樣一來函數(shù)內(nèi)部就改變了全局變量了

def foo():
    global var # 聲明了是全局變量
    print var 
    var = "local"

var = "global"
foo()

# output:
global
local
  • 可變對(duì)象的*其實(shí)是引用傳遞
In [72]: my_list1 = [[1, 2, 3]] * 2

In [73]: my_list1
Out[73]: [[1, 2, 3], [1, 2, 3]]

In [74]: my_list1[1][0] = 'a' # 我只修改子列表中的一項(xiàng)

In [75]: my_list1
Out[75]: [['a', 2, 3], ['a', 2, 3]] # 但是都影響到了

In [76]: my_list2 = [[1, 2, 3] for i in range(2)] # 用這種循環(huán)生成不同對(duì)象的方法就不影響了

In [77]: my_list2[1][0] = 'a'

In [78]: my_list2
Out[78]: [[1, 2, 3], ['a', 2, 3]]
  • datetime也有布爾值
In [34]: import datetime


In [35]: print('"datetime.time(0,0,0)" (Midnight) ->', bool(datetime.time(0,0,0)))

('"datetime.time(0,0,0)" (Midnight) ->', False)


In [36]: print('"datetime.time(1,0,0)" (1 am) ->', bool(datetime.time(1,0,0)))

('"datetime.time(1,0,0)" (1 am) ->', True)
  • bool其實(shí)是int的子類
In [97]: isinstance(True, int)
Out[97]: True


In [98]: True + True
Out[98]: 2


In [99]: 3 * True + True
Out[99]: 4


In [100]: 3 * True - False
Out[100]: 3


In [104]: True << 10
Out[104]: 1024

dic = {1:"1"}
dic[True] = "True"
dic 
# output:
{1: 'True'}

異常處理加else

In [150]: try:

   .....:     print('third element:', a_list[2])

   .....: except IndexError:

   .....:     print('raised IndexError')

   .....: else:

   .....:     print('no error in try-block') # 只有在try里面沒有異常的時(shí)候才會(huì)執(zhí)行else里面的表達(dá)式

   .....:

raised IndexError # 拋異常了 沒完全完成

In [153]: i = 0


In [154]: while i < 2:

   .....:     print(i)

   .....:     i += 1

   .....: else:

   .....:     print('in else')

   .....:

0

1

in else # while也支持哦~

In [155]: i = 0


In [156]: while i < 2:

   .....:         print(i)

   .....:         i += 1

   .....:         break

   .....: else:

   .....:         print('completed while-loop')

   .....:

0 # 被break了 沒有完全執(zhí)行完 就不執(zhí)行else里面的了

In [158]: for i in range(2):

   .....:         print(i)

   .....: else:

   .....:         print('completed for-loop')

   .....:

0

1

completed for-loop


In [159]: for i in range(2):

   .....:         print(i)

   .....:         break

   .....: else:

   .....:         print('completed for-loop')

   .....:

0 # 也是因?yàn)閎reak了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膘壶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洲愤,老刑警劉巖颓芭,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柬赐,居然都是意外死亡亡问,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門肛宋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來州藕,“玉大人,你說我怎么就攤上這事酝陈〈膊#” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵沉帮,是天一觀的道長(zhǎng)锈死。 經(jīng)常有香客問我,道長(zhǎng)穆壕,這世上最難降的妖魔是什么待牵? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮喇勋,結(jié)果婚禮上缨该,老公的妹妹穿的比我還像新娘。我一直安慰自己川背,他們只是感情好贰拿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渗常,像睡著了一般壮不。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上皱碘,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天询一,我揣著相機(jī)與錄音,去河邊找鬼。 笑死健蕊,一個(gè)胖子當(dāng)著我的面吹牛菱阵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缩功,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼晴及,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了嫡锌?” 一聲冷哼從身側(cè)響起虑稼,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎势木,沒想到半個(gè)月后蛛倦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啦桌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年溯壶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甫男。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡且改,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出板驳,到底是詐尸還是另有隱情又跛,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布笋庄,位于F島的核電站效扫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏直砂。R本人自食惡果不足惜菌仁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望静暂。 院中可真熱鬧济丘,春花似錦、人聲如沸洽蛀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郊供。三九已至峡碉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驮审,已是汗流浹背鲫寄。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工吉执, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人地来。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓戳玫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親未斑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咕宿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

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

  • 包(lib)、模塊(module) 在Python中蜡秽,存在包和模塊兩個(gè)常見概念府阀。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,801評(píng)論 0 27
  • 用于python面試整理,主要來源于http://www.cnblogs.com/skiler/p/6952707...
    十里江城閱讀 2,341評(píng)論 0 13
  • 今生 照習(xí)俗家明來到廟里祭拜佛像,一座一座佛像都照例拜完了诉瓦,家明起身離開的時(shí)候開始變得不太對(duì)勁,妻子發(fā)覺他一反常態(tài)...
    小獅子rose閱讀 490評(píng)論 2 2
  • 實(shí)踐中的人物模型 引入人物模型力细,用這種方法生成目標(biāo)導(dǎo)向設(shè)計(jì)概念 設(shè)計(jì)者‘虛構(gòu)’人物模型 通過人物模型捕捉到的用戶行...
    _達(dá)斯基閱讀 335評(píng)論 0 0
  • 時(shí)間管理(13/100):日理萬機(jī)的流程 上圖非常清晰的表現(xiàn)了日理萬機(jī)的流程睬澡。 行動(dòng)三角形:收集~排程~執(zhí)行 收集...
    小奚之屋閱讀 187評(píng)論 0 0