日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

零.注意的细节

發(fā)布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 零.注意的细节 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
# Author:Zhang Yuan#Python中的字符串不能被修改,它們是 immutable 的#python中固定的不可變的對象內(nèi)存地址是一樣的 a=3 b=3 print(a is b,a==b,id(a),id(b)) #True True 140716530557648 140716530557648 c=(3,) d=(3,) print(c is d,c==d,id(c),id(d)) #True True 2623132500824 2623132500824 class A:pass e=A() f=A() print(e is f,e==f,id(e),id(f)) #False False 2623134376288 2623134314392#PS:列表List與List[:]值相同,但不是一個對象 words = ['cat', 'window', 'defenestrate'] print(words == words[:],words is words[:]) #True False#迭代器在內(nèi)存中結(jié)束后,則不能迭代了。 a=range(10) b=iter(a) for i in b:print(i,end=",") # #第二次再次訪問則沒有結(jié)果,因為b為迭代器.兩次都換成a則可以。a直接寫入了內(nèi)存,b在內(nèi)存中迭代 for j in b:print(j,end=",") print("OK") #0,1,2,3,4,5,6,7,8,9,OK#列表作為棧使用效率好(后進先出“l(fā)ast-in,first-out”)。 #PS:列表作為隊列使用(“先進先出”),單純使用效率低。若要實現(xiàn)一個隊列, collections.deque 被設(shè)計用于快速地從兩端操作,它類似于列表,但從左端添加和彈出的速度較快,而在中間查找的速度較慢。 from collections import deque queue=deque([1,2,"a","b","c"]) #雙隊列 queue.append("Terry") #右端添加 print(queue.popleft()) #最端出#嵌套的列表推導式,一層層表述 matrix=[[i+4*j for i in range(4)] for j in range(3)] print(matrix) #[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]] matrix2=[[row[i] for row in matrix] for i in range(4)] print(matrix2) #[[0, 4, 8], [1, 5, 9], [2, 6, 10], [3, 7, 11]] #注意下面的區(qū)別:單獨的列表,相當于各成員與空內(nèi)容zip成元組 print(list(zip(matrix))) #[([0, 1, 2, 3],), ([4, 5, 6, 7],), ([8, 9, 10, 11],)] #注意下面的區(qū)別:加*讓列表的各個部分獨立開來,然后再zip成元組 print(list(zip(*matrix))) #[(0, 4, 8), (1, 5, 9), (2, 6, 10), (3, 7, 11)]#花括號或 set() 函數(shù)可以用來創(chuàng)建集合。注意:要創(chuàng)建一個空集合你只能用 set() 而不能用 {},因為后者是創(chuàng)建一個空字典 #類似于 列表推導式,集合也支持推導式形式 a = {x for x in 'abracadabra' if x not in 'abc'} #{'r', 'd'}#字典推導式可以從任意的鍵值表達式中創(chuàng)建字典 d={x: x ** 2 for x in (2, 4, 6)} #{2: 4, 4: 16, 6: 36} #字典一個Key只能對應一個值,所以下面的4會被5覆蓋 D={a:b for a in "ABCDEF" for b in (4,5)} #{'A': 5, 'B': 5, 'C': 5, 'D': 5, 'E': 5, 'F': 5}#循環(huán)的技巧 #當在字典中循環(huán)時,用 items() 方法可將關(guān)鍵字和對應的值同時取出 #當在序列中循環(huán)時,用 enumerate() 函數(shù)可以將索引位置和其對應的值同時取出 #當同時在兩個或更多序列中循環(huán)時,可以用 zip() 函數(shù)將其內(nèi)元素一一匹配。 #有時可能會想在循環(huán)時修改列表內(nèi)容,一般來說改為創(chuàng)建一個新列表是比較簡單且安全的#布爾運算符 and 和 or 也被稱為 短路 運算符:它們的參數(shù)從左至右解析,一旦可以確定結(jié)果解析就會停止。#序列對象可以與相同類型的其他對象比較。它們使用 字典順序 進行比較:首先比較兩個序列的第一個元素,再比較每個序列的第二個元素,以此類推. #字典順序?qū)ψ址畞碚f,是使用單字符的 Unicode 碼的順序 print( (1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4) ) #True#必須要有 __init__.py 文件才能讓 Python 將包含該文件的目錄當作包。 #在 __init__.py 文件設(shè)置 __all__=["..."],遇到 from package import * 時會自動導入的模塊名列表,若沒有這句則不自動導入。#請注意,相對導入可以導入中涉及的兄弟模塊和父包。 #如果有下面語句,作為模塊導入其他,正常運行。由于主模塊的名稱總是 "__main__",作為主模塊會運行錯誤,因此用作Python應用程序主模塊的模塊必須始終使用絕對導入。 # from .import module_test1,module_test2#設(shè)計到需要加載句柄,關(guān)閉句柄的操作,多用with關(guān)鍵字。#異常執(zhí)行:try執(zhí)行,except發(fā)生異常時執(zhí)行,else沒有異常時執(zhí)行,finally在所有情況執(zhí)行。 #raise拋出異常#global 語句可以用來指明某個特定的變量位于全局作用域并且應該在那里重新綁定; nonlocal 語句表示否定當前命名空間的作用域,尋找父函數(shù)的作用域并綁定對象。#Python3的多重繼承中,繼承的類有共同的基類:按照廣度優(yōu)先、從左到右尋找父類和兄弟類。繼承的類沒有共同基類:按照深度優(yōu)先、從左到右尋找不同的父類#Python中的類或類實例,可以自定義添加變量。不同于C++類的嚴格封裝作用。#Python的類可以迭代器化:__iter__(),__next__()讓類迭代器化 #for語句中底層會自動調(diào)用容器對象中的 iter(),產(chǎn)生迭代器,所以會有for循環(huán)。 #用yield寫生成器使得語法更為緊湊,因為它會自動創(chuàng)建 __iter__() 和 __next__() 方法。 #生成器表達式語法類似列表推導式,將外層為圓括號而非方括號。這種表達式返回生成器,且可以直接被外部函數(shù)直接使用(重疊的括號可以省略)。 print( sum(i*i for i in range(10)) )#大多數(shù)在浮點數(shù)方面都無法精確計算,因為部分小數(shù)無法用二進制精確表示 #如果要做數(shù)值相等判斷時要注意,可能不能絕對精確 print((0.1+0.1+0.1)==0.3) #False from decimal import * print((Decimal("0.1")+Decimal("0.1")+Decimal("0.1"))==Decimal("0.3")) #True #round的四舍五入不準確,因為部分小數(shù)無法用二進制精確表示 #要準確需要自己寫函數(shù)判定 print(round(2.675,2)) #2.67 wrong print(round(2.685,2)) #2.69 #decimal 模塊提供了一種 Decimal 數(shù)據(jù)類型用于十進制浮點運算 from decimal import * print(round(Decimal('0.70') * Decimal('1.05'), 2)) #0.74 print(round(0.70 * 1.05, 2)) #0.73 #精確表示特性使得 Decimal 類能夠執(zhí)行對于二進制浮點數(shù)來說不適用的模運算和相等性檢測 print(Decimal('1.00') % Decimal('.10')) #0.00 print(1.00 % 0.10) #0.09999999999999995 print(sum([Decimal('0.1')]*10) == Decimal('1.0')) #True print(sum([0.1]*10) == 1.0) #False#Python3中下面定義為False: # ?被定義為假值的常量: None 和 False。 # ?任何數(shù)值類型的零: 0, 0.0, 0j, Decimal(0), Fraction(0, 1) # ?空的序列和多項集: '', (), [], {}, set(), range(0)#Python3中,讓代碼可控制的執(zhí)行,可以把代碼字符串化。然后用exec()、eval()、compile()控制執(zhí)行。#Python3類的進化: #類方法:@classmethod 把一個方法裝飾成類方法。可以實現(xiàn)類中函數(shù)的直接調(diào)用。必須有隱式參數(shù)cls #靜態(tài)方法:@staticmethod 把一個方法裝飾成靜態(tài)方法。也可以實現(xiàn)類中函數(shù)的直接調(diào)用。不需要隱式參數(shù)。與@classmethod不同處有,cls在繼承時指向類會變化。 #類迭代器化:__iter__(),__next__()讓類迭代器化 #函數(shù)方法屬性化:property與@property 讓類中設(shè)置的函數(shù)方法屬性化(變量化),讓實例可以直接以變量的形式操作。 #類的構(gòu)造函數(shù):__init__(self);析構(gòu)函數(shù):__del__(self) #類的實例序列化:__init__(self)這個方法通常要設(shè)置字典為數(shù)據(jù)類型;__setitem__(self, key, value): 讓實例可直接設(shè)置:A[key]=...;__getitem__(self, item): 讓實例可直接訪問:A[item];__delitem__(self, key): 讓實例可直接運行del A[key];__len__(self): 讓實例可直接運行l(wèi)en(A)

?

轉(zhuǎn)載于:https://www.cnblogs.com/i201102053/p/10763829.html

總結(jié)

以上是生活随笔為你收集整理的零.注意的细节的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。