python(高級)⑤內(nèi)建屬性、模塊進(jìn)階

一內(nèi)建屬性和內(nèi)建函數(shù)

1

子類沒有實(shí)現(xiàn)__init__方法時,默認(rèn)自動調(diào)用父類的。如定義__init__方法時,需自己手動調(diào)用父類的__init__方法




當(dāng)t.b執(zhí)行時,會調(diào)用Person類中定義的__getattribute__方法,但是在這個方法的執(zhí)行過程中,if條件不滿足,所以 程序執(zhí)行else里面的代碼,即return self.test問題就在這,因?yàn)閞eturn需要把self.test的值返回,那么首先要獲取self.test的值,因?yàn)閟elf此時就是t這個對象,所以self.test就是t.test此時要獲取t這個對象的test屬性,那么就會跳轉(zhuǎn)到__getattribute__方法去執(zhí)行,即此時產(chǎn)生了遞歸調(diào)用,由于這個遞歸過程中 沒有判斷什么時候推出,所以這個程序會永無休止的運(yùn)行下去,又因?yàn)槊看握{(diào)用函數(shù),就需要保存一些數(shù)據(jù),那么隨著調(diào)用的次數(shù)越來越多,最終內(nèi)存吃光,所以程序 崩潰

注意:不要在__getattribute__方法中調(diào)用self.xxx

二內(nèi)建函數(shù)

Build-in Function,啟動python解釋器,輸入dir(__builtins__),可以看到很多python解釋器啟動后默認(rèn)加載的屬性和函數(shù),這些函數(shù)稱之為內(nèi)建函數(shù)

help(function),查看如何使用

1range

range(a)從0開始計數(shù),到a-1。例如a等于5,計數(shù)為0,1,2,3,4

range(a,b,c)從a開始計數(shù)到b-1結(jié)束,每次跳躍c。例如range(1,11,2)為1,3,5,7,9

通過range函數(shù)可生成一個列表:


2 map函數(shù)

map函數(shù)會根據(jù)提供的函數(shù)對指定序列做映射

map(...)

? ? ? ? ? ? ?map(function,sequence[,sequence,...])->list

funtion是一個函數(shù)

sequence是一個或多個序列,取決于function需要幾個參數(shù)

返回值是一個map


3 filter函數(shù)

filter函數(shù)會對指定序列執(zhí)行過濾操作

filter()

function:可以接受一個參數(shù),返回布爾值True或False

·sequence:序列可以是str,tuple,list

下面是兩個例子,第一個是選出列表中的奇數(shù),第二個是選出列表中平方根為整數(shù)的數(shù)。

4 reduce函數(shù)

reduce函數(shù)會對參數(shù)序列中元素進(jìn)行累積。

函數(shù)將一個數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給reduce中的函數(shù) function(有兩個參數(shù))先對集合中的第 1、2 個元素進(jìn)行操作,得到的結(jié)果再與第三個數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個結(jié)果。

reduce() 函數(shù)語法:

reduce(function,iterable[,initializer])

function -- 函數(shù),有兩個參數(shù)

iterable -- 可迭代對象

initializer -- 可選,初始參數(shù)

在Python3里,reduce函數(shù)已經(jīng)被從全局名字空間里移除了,它現(xiàn)在被放置在fucntools模塊里用的話要先引入:from functools import reduce

例子:

5 sorted函數(shù)

sorted(...)

sorted(iterable, key=None, reverse=False) --> new sorted list

將一個可迭代的對象進(jìn)行排序,不設(shè)定reverse或reverse等于false時按從小到大排序,排序后生產(chǎn)一個新列表,將reverse設(shè)定為1后,按從大到小的順序排序。

例子:


三 functools

1functools

functools是python2.5被引人的,一些工具函數(shù)放在此包里。

在python3.5中


python中增加了很多工具函數(shù),做業(yè)務(wù)開發(fā)的時候大多情況用不到,這里介紹使用頻率比較高的2個函數(shù)

2 partial 函數(shù)(偏函數(shù))

把一個函數(shù)的某些參數(shù)設(shè)置默認(rèn)值,返回一個新的函數(shù),調(diào)用這個新函數(shù)會更簡單。


3 wraps 函數(shù)

使用裝飾器時,有一些細(xì)節(jié)需要被注意。例如,被裝飾后的函數(shù)其實(shí)已經(jīng)是另外一個函數(shù)了(函數(shù)名等函數(shù)屬性會發(fā)生改變)。

添加后由于函數(shù)名和函數(shù)的doc發(fā)生了改變,對測試結(jié)果有一些影響,例如:

所以,Python的functools包中提供了一個叫wraps的裝飾器來消除這樣的副作用。例如:


四 模塊進(jìn)階

Python有一套很有用的標(biāo)準(zhǔn)庫(standard library)。標(biāo)準(zhǔn)庫會隨著Python解釋器,一起安裝在你的電腦中的。 它是Python的一個組成部分。這些標(biāo)準(zhǔn)庫是Python為你準(zhǔn)備好的利器,可以讓編程事半功倍。

1 常用標(biāo)準(zhǔn)庫

2 time

1.help(time)之后可以知道time有2種時間表示形式:

1、時間戳表示法,即以整型或浮點(diǎn)型表示的是一個以秒為單位的時間間隔。這個時間的基礎(chǔ)值是從1970年的1月1號零點(diǎn)開始算起。

2、元組格式表示法,即一種Python數(shù)據(jù)結(jié)構(gòu)表示。這個元組有9個整型內(nèi)容。分別表示不同的時間含義。

2、名詞解釋:

UTC(Coordinated Universal Time,世界協(xié)調(diào)時)亦即格林威治天文時間,世界標(biāo)準(zhǔn)時間。在中國為UTC+8。

DST(Daylight Saving Time)即夏令時。是一種為節(jié)約能源而人為規(guī)定地方時間的制度,一般在天亮早的夏季人為將時間提前一小時。

3、包含的變量:

timezone --當(dāng)?shù)貢r間與標(biāo)準(zhǔn)UTC時間的誤差,以秒計

altzone --當(dāng)?shù)叵牧顣r時間與標(biāo)準(zhǔn)UTC時間的誤差,以秒計

daylight --當(dāng)?shù)貢r間是否反映夏令時,默認(rèn)為0

zname --關(guān)于(標(biāo)準(zhǔn)時區(qū)名稱,夏令時時區(qū)名稱)的元組

4、包含的函數(shù):

time() --返回當(dāng)前時間戳,浮點(diǎn)數(shù)形式。不接受參數(shù)

clock() --返回當(dāng)前程序的cpu執(zhí)行時間。unix系統(tǒng)始終返回全部運(yùn)行時間;而windows從第二次開始都是以第一次調(diào)用此函數(shù)時的時間戳作為基準(zhǔn),而不是程序開始時間為基準(zhǔn)。不接受參數(shù)。

sleep() --延遲一個時間段,接受整型、浮點(diǎn)型。

gmtime() --將時間戳轉(zhuǎn)換為UTC時間元組格式。接受一個浮點(diǎn)型時間戳參數(shù),其默認(rèn)值為當(dāng)前時間戳。

localtime() --將時間戳轉(zhuǎn)換為本地時間元組格式。接受一個浮點(diǎn)型時間戳參數(shù),其默認(rèn)值為當(dāng)前時間戳。

asctime() --將時間元組格式轉(zhuǎn)換為字符串形式。接受一個時間元組,其默認(rèn)值為localtime()返回值

ctime() --將時間戳轉(zhuǎn)換為字符串。接受一個時間戳,其默認(rèn)值為當(dāng)前時間戳。等價于asctime(localtime(seconds))

mktime() --將本地時間元組轉(zhuǎn)換為時間戳。接受一個時間元組,必選。

strftime() --將時間元組以指定的格式轉(zhuǎn)換為字符串形式。接受字符串格式化串、時間元組。時間元組為可選,默認(rèn)為localtime()

strptime() --將指定格式的時間字符串解析為時間元組,strftime()的逆向過程。接受字符串,時間格式2個參數(shù),都是必選。

tzset() --改變本地時區(qū)。

5、時間字符串支持的格式符號:

格式含義備注

%a本地(locale)簡化星期名稱

%A本地完整星期名稱

%b本地簡化月份名稱

%B本地完整月份名稱

%c本地相應(yīng)的日期和時間表示

%d一個月中的第幾天(01 - 31)

%H一天中的第幾個小時(24小時制,00 - 23)

%I第幾個小時(12小時制,01 - 12)

%j一年中的第幾天(001 - 366)

%m月份(01 - 12)

%M分鐘數(shù)(00 - 59)

%p本地am或者pm的相應(yīng)符

%S秒(01 - 61)

%U一年中的星期數(shù)。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數(shù)都放在第0周。

%w一個星期中的第幾天(0 - 6,0是星期天)

%W和%U基本相同,不同的是%W以星期一為一個星期的開始。

%x本地相應(yīng)日期

%X本地相應(yīng)時間

%y去掉世紀(jì)的年份(00 - 99)

%Y完整的年份

%Z時區(qū)的名字(如果不存在為空字符)

%%‘%’字符

3 hashlib

importhashlib

m = hashlib.md5()#創(chuàng)建hash對象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一個128位的密文

print m#

m.update('test')#更新哈希對象以字符串參數(shù)

print m.hexdigest()#返回十六進(jìn)制數(shù)字字符串


4?常用擴(kuò)展庫


5?SimpleHTTPServer

就可以運(yùn)行起來靜態(tài)服務(wù)。平時用它預(yù)覽和下載文件太方便了。

在終端中輸入命令:

python -m http.server PORT


6?matplotlib


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個人筆記,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,937評論 0 5
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,665評論 0 4
  • 1.元類 1.1.1類也是對象 在大多數(shù)編程語言中,類就是一組用來描述如何生成一個對象的代碼段。在Python中這...
    TENG書閱讀 1,417評論 0 3
  • 街口的紅綠燈忽明忽暗… 弄堂的貓懶懶散散… 你曾說這種微醺的頹廢你很喜歡… 看… 用雙眼記住你眼中的風(fēng)景原來并不難...
    七漁安閱讀 175評論 0 2
  • 在匆匆忙忙過完這一周,搞定了所有手里的工作后,終于迎來了我的美妙年假。 這次年假我和老公是自由行。兩個懶蛋在訂下來...
    Chloe婉閱讀 264評論 0 0

友情鏈接更多精彩內(nèi)容