python standard lib_跟Python Standard Library混个脸熟(一)
跟Python Standard Library混個(gè)臉熟(一)
[TOC]
Python 本身提供了很豐富的功能,怎么學(xué)習(xí)這些東西一直是我思考的,通讀整個(gè) Python3 Standard Library 會(huì)很有幫助,可以搞不清所有細(xì)節(jié),但是得知道提供了什么,這些能解決什么問題。平時(shí)不會(huì)用到所有,就能解決問題。有個(gè)理論叫錘子理論,要避免自己看到的所有都是釘子,那就試圖去了解更多的工具,眼界開闊也是寫好代碼的一個(gè)因素。當(dāng)你要深度使用某個(gè)具體模塊的時(shí)候可以去研究其源碼。
Python3.6提供了58個(gè)內(nèi)建函數(shù),一些常用的 all() , any() , dir() , range() , list() , type() ....值得注意的是,和Python2的區(qū)別是 reduce 不在其中,被放到了, functiontools 里面。這些方法都可以過一遍了解大致的用法,寫出高效簡潔的代碼的前提。隨便羅列兩個(gè) ascii(object) Python2 沒有這個(gè)函數(shù),它返回一個(gè)字符傳,忽略其中的Non-ASCII Characters,忽略的方法是用\x, \u or \U 等, 這也是其和 repr() 的區(qū)別,看下面這個(gè)例子
my = {"name": "鄭午"}
print(ascii(my)) # {'name': '\u90d1\u5348'}
print(repr(my)) # {'name': '鄭午'}
divmod(a, b) a,b是兩個(gè)實(shí)數(shù),返回商和余數(shù)
a = 10.0
b = 1.3
print(divmod(a, b)) # (7.0, 0.8999999999999997)
內(nèi)建常數(shù)是指 None , True , False , __debug__ , Ellipsis , NotImplemented 這樣的,前四個(gè)是不能被重新賦值的。
主要的內(nèi)建類型:numerics, sequences, mappings, classes, instances and exceptions. 這個(gè)主題下面會(huì)涉及到很多基本的東西:
1.真值測試,在Python 中很多都可以被被認(rèn)為為False 如空字符串,None, 空list,... 2.布爾運(yùn)算,主要有或(or), 且(and),非(not) 3.比較運(yùn)算符號(hào),除了常用的還有比較特殊的,is, is not 判斷是否為同一個(gè)對象。 4.數(shù)值型( Numeric Types )和相關(guān)操作。值得記住的是Python 是支持復(fù)數(shù)運(yùn)算的。 5.迭代器類型(Iterator Types), 如何讓自己新建類型可迭代?以及Python迭代器本身就能說好長。 6.序列類型和相關(guān)操作,這主要是list, tuple, range。需要注意的是可變和不可變類型在代碼里帶來的區(qū)別。 7.字符串和相關(guān)操作,有多方法可以好好研究,會(huì)在字符串操作中帶來便利 8.二進(jìn)制列表類型,用得相對較少,bytes, bytearray, memoryview 9.集合類型和相關(guān)操作 10,dict 11.上下文管理器(Context Manager Types),這是個(gè)很重要的概念,后面專文解釋 12.其他
所有異常都是BaseException 的子類, 異常層次結(jié)構(gòu)圖 可以有一個(gè)全局感受
1.string對象及其方法 2.正則 3.序列比較,difflib 4.字符串包裝和填充,Text wrapping and filling 5.Unicode Database 6.readline
二進(jìn)制數(shù)據(jù)相關(guān)操作
1.struct 可以實(shí)現(xiàn)Python bytes和c的structs 直接的數(shù)據(jù)轉(zhuǎn)換,處理二進(jìn)制文件,和二進(jìn)制網(wǎng)絡(luò)數(shù)據(jù)。 2.codecs
1.datetime 2.calendar 3.collections 這個(gè)里面有很多方便的東西,Counter方便的對Sequences中的元素做統(tǒng)計(jì),ChainMap合并多個(gè)dict當(dāng)做一個(gè)對象處理。OrderedDict有序的dict. UserDict, UserList 4.collections.abc 集合抽象類,可以結(jié)合 isinstance() 方法使用,可以用來檢查某個(gè)對象是否可序列化之類, 5.優(yōu)先隊(duì)列(heepq) 6.biset 這是我第一次發(fā)現(xiàn)的東西 7.array Efficient arrays of numeric values 8.weakref 這里有個(gè)概念 weak references , wiki 解釋說弱引用是相對于強(qiáng)引用的區(qū)別是不能保證對象不被垃圾回收.... 待仔細(xì)考慮考慮 9.types 10.copy 11.有兩個(gè)方法copy,deepcopy 12.pprint 13.enum 枚舉類型,誰說Python 沒有枚舉,不過我很少見人用到,通常都是list,dict 之類的代替了,不知道為啥
1.math, 這個(gè)很常用 2.cmath 3.decimail 4.fractions 有理數(shù) 5.random 隨機(jī)函數(shù) 6.statistics 可計(jì)算常用統(tǒng)計(jì)量
1.itertools 創(chuàng)建高效的迭代器 2.functools 和值得研究的模塊,可以讓代碼簡潔高效 3.operator 提供和運(yùn)算符號(hào)相對應(yīng)的相關(guān)函數(shù),如 add , 和 +
總結(jié)
以上是生活随笔為你收集整理的python standard lib_跟Python Standard Library混个脸熟(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 时间序列分解 stl_ju
- 下一篇: python server send e