Python官方教程閱讀總結(jié)-接下來(lái)及以后

正式的官方教程其實(shí)到第12小節(jié)就已經(jīng)差不多完結(jié)了,13小節(jié)及其以后多是一些介紹性的東西,在這里一并總結(jié)了。

1. 前面介紹的教程屬于python官方教程文檔的一部分,其他的一些文檔包括:

? ? (1)python標(biāo)準(zhǔn)庫(kù) https://docs.python.org/3.7/library/index.html#library-index

? ? ? ? ? ? ? ? 里面更詳細(xì)的介紹了類型,函數(shù),模塊,涉及到網(wǎng)絡(luò)通信,隨機(jī)數(shù),壓縮等各個(gè)方面

? ? (2)安裝python模塊?https://docs.python.org/3.7/installing/index.html#installing-index

? ? ? ? ? ? ? ? 介紹怎么安裝用戶開發(fā)的第三方模塊

? ? (3)python 語(yǔ)言參考?https://docs.python.org/3.7/reference/index.html#reference-index

? ? ? ? ? ? 更詳細(xì)的介紹了python的語(yǔ)法

? ? (4)更多python資源

? ? ? ? ? ? <1> python官網(wǎng)?https://www.python.org/,包含了代碼,文檔以及相關(guān)的鏈接

? ? ? ? ? ? <2> python 官方文檔?https://docs.python.org

? ? ? ? ? ? <3> python 包索引?https://pypi.org,用戶創(chuàng)建的各種第三方庫(kù)以供其他用戶下載

? ? ? ? ? ? <4> python cookbook, 官方都推薦的書,沒看的抓緊看吧,代碼,腳本,模塊應(yīng)有盡有

? ? ? ? ? ? <5> python 相關(guān)的視頻?http://www.pyvideo.org,來(lái)自各種會(huì)議或組會(huì)的視頻鏈接

? ? ? ? ? ? <6> scipy?https://scipy.org, python用于科學(xué)計(jì)算的包

2. python相關(guān)的問題報(bào)告,以及建議什么的可以發(fā)送給?python-list@python.org

3. 交互輸入編輯與歷史替換

? ? 一些版本的python解釋器能夠支持當(dāng)前是輸入行的編輯以及歷史替換,就像shell中的編輯風(fēng)格一樣,這種編輯風(fēng)格是通過(guò) GNU Readline library 實(shí)現(xiàn)的

? ? 3.1 Tab 鍵補(bǔ)全與歷史編輯

? ? ? ? ? ? 當(dāng)python解釋器啟動(dòng)的時(shí)候,變量名和模塊名的補(bǔ)全功能就可以使用了,熟悉linux shell命令的人都知道,當(dāng)你輸入一個(gè)變量的前幾個(gè)字符后按下Tab,就會(huì)自動(dòng)補(bǔ)全剩下的字符,或提示你可選的字符。對(duì)于點(diǎn)表達(dá)式,例如string.a,使用Tab鍵,會(huì)評(píng)估 . 以前的表達(dá)式,然后從該對(duì)象的屬性中顯示建議補(bǔ)全的內(nèi)容。

? ? ? ? 默認(rèn)配置下,所有的歷史命令會(huì)存到用戶目錄下的一個(gè).python_history 文件中,當(dāng)下次交互輸入的時(shí)候,這些歷史命令可以重新調(diào)用。

? ? 3.2 交互式解釋器的替代選擇

? ? ? ? ? ? (1)IPython, 現(xiàn)在應(yīng)該叫jupyter notebook,是一個(gè)增強(qiáng)版的交互式python解釋器,支持 Tab 補(bǔ)全, 對(duì)象查找,高級(jí)歷史管理等,也可以完全定制和嵌入到別的應(yīng)用中

? ? ? ? ? ? (2)另一個(gè)增強(qiáng)型交互式環(huán)境是bpython

4. 浮點(diǎn)型數(shù)據(jù)計(jì)算,問題與局限

? ? python中的float數(shù)字,是基于二進(jìn)制小數(shù)。與十進(jìn)制小數(shù)的表示方法有所差別。如0.125,在十進(jìn)制中,這個(gè)值寫成:1/10 + 2/100 + 5/1000;同理,在二進(jìn)制中就寫成了:0/2 + 0/4 + 1/8, 這兩種表示方法有相同的值

? ? 問題是,大多數(shù)十進(jìn)制小數(shù)并不能用二進(jìn)制小數(shù)精確表示。結(jié)果就是你輸入的十進(jìn)制浮點(diǎn)數(shù)只是用二進(jìn)制浮點(diǎn)數(shù)的近似表示,例如,十進(jìn)制的小數(shù)0.1,無(wú)論你用多少位數(shù)的二進(jìn)制數(shù)字來(lái)表示,都只能無(wú)限接近0.1,而不能完全等于

? ? 現(xiàn)在的大多數(shù)機(jī)器,浮點(diǎn)數(shù)都只能用二進(jìn)制的小數(shù)表示。對(duì)應(yīng)分?jǐn)?shù)的分子用8字節(jié)的前53位來(lái)表示,分母表示為2的次方,例如,0.1表示為:3602879701896397?/?2?**?55?

? ? 需要注意的是,在python中,浮點(diǎn)數(shù)的輸出即使看起來(lái)像十進(jìn)制的小數(shù),但是實(shí)際儲(chǔ)存的只是用二進(jìn)制表示的近似數(shù)

? ? 這樣就帶來(lái)一個(gè)問題,如前面小節(jié)中介紹decimal模塊的時(shí)候也提到過(guò)的問題:

0.1 + 0.1 + 0.1 == 0.3 結(jié)果為False,對(duì)于需要精確十進(jìn)制表示的場(chǎng)景,還是使用decimal 模塊。

? ? ?另外一種精確運(yùn)算可以用fractions模塊來(lái)進(jìn)行,該模塊實(shí)現(xiàn)了基于有理數(shù)的計(jì)算,能夠精確的表示小數(shù)

? ? python的包Numpy 和 Scipy也提供了用于數(shù)學(xué)統(tǒng)計(jì)的運(yùn)算包

? ? Python也提供了一些工具,為精確表示提供一些幫助,如:

? ? float.hex() 方法以16進(jìn)制為基數(shù)精確表示浮點(diǎn)數(shù),并且這種表示方法是跨平臺(tái)的

? ? math.fsum()函數(shù),會(huì)減少計(jì)算過(guò)程中的精度損失,以保證計(jì)算 精度,如:

? ? sum( [0.1] * 10 ) == 1.0? ?# False

? ? math.fsum( [0.1] * 10?)? ? ?# True

? ? 目前幾乎所有使用IEEE-754浮點(diǎn)運(yùn)算標(biāo)準(zhǔn)的機(jī)器以及所有的平臺(tái)都會(huì)把python浮點(diǎn)數(shù)映射為IEEE-754雙精度類型,754雙精度類型包含53位精度。

5. 附錄

? ? 5.1 交互模式

? ? (1)錯(cuò)誤控制

? ? ? ? 當(dāng)錯(cuò)誤發(fā)生時(shí),解釋器打印出錯(cuò)誤信息和錯(cuò)誤堆棧。在交互模式下,它會(huì)返回到初級(jí)提示符。當(dāng)錯(cuò)誤來(lái)自一個(gè)文件,它會(huì)以一個(gè)非0的退出狀態(tài)退出。 一些錯(cuò)誤是致命的,也會(huì)引起程序以非0狀態(tài)退出。所有錯(cuò)誤信息寫入到標(biāo)準(zhǔn)錯(cuò)誤流中,命令的正常輸出會(huì)寫入到標(biāo)準(zhǔn)輸出流。

? ? 在初級(jí)提示符或次級(jí)提示符輸入打斷字符(ctr - c)會(huì)取消輸入返回到初級(jí)提示符,如果程序在執(zhí)行過(guò)程中被打斷,則會(huì)報(bào)KeyboardInterrupt異常,這個(gè)異??赡苣鼙籺ry 語(yǔ)句處理

? ? (2)執(zhí)行python腳本

? ? Linux系統(tǒng)中,python腳本在獲得可執(zhí)行權(quán)限后可以直接運(yùn)行,需要在腳本的開頭指定python解釋器,如下:

? ??#!/usr/bin/env python

? ? 給腳本加上可執(zhí)行權(quán)限:

? ??chmod +x myscript.py

? ? 在window系統(tǒng)上,不需要額外添加權(quán)限,直接雙擊腳本就可以運(yùn)行了

? ? (3)交互配置文件

? ? 在python的交互模式中,解釋器每次啟動(dòng)都要執(zhí)行的命令可以在啟動(dòng)配置文件(PYTHONSTARTUP)中進(jìn)行配置。這個(gè)文件只有在交互模式下才會(huì)讀取,如果想在腳本中使用這些啟動(dòng)設(shè)置,就必須在腳本中聲明,如下:

? ? import os

? ? filename = os.environ.get('PYTHONSTARTUP')

? ? if filename and os.path.isfile(filename):

? ? ? ? with open(filename) as fobj:

? ? ? ? ? ? ? ? startup_file = fobj.read()

? ? ? ? exec(startup_file)

? ? (4)定制模塊

? ? ? ? python中sitecustomize 和 usercustomize來(lái)定制模塊,要定制模塊,需先用如下方法找到site-packages目錄的位置:

? ? ? ? import site

? ? ? ? site.getusersitepackages()? ?# 獲取site-packages路徑

? ? ? ? 在site-packages 目錄下創(chuàng)建一個(gè)usercustomize.py文件,里面放入所需要的模塊內(nèi)容,python每次啟動(dòng)時(shí)都會(huì)讀取該文件,如果python 啟動(dòng)時(shí)加上 -s 選項(xiàng),則禁用該文件導(dǎo)入。

? ? ? ? sitecustomize以相同的方式工作,通常由計(jì)算機(jī)管理員在全局的site-packages目錄下進(jìn)行創(chuàng)建,并在usercustomize之前被導(dǎo)入。


本篇內(nèi)容到此結(jié)束,參見官方 文檔:https://docs.python.org/zh-cn/3.7/tutorial/interactive.html

https://docs.python.org/zh-cn/3.7/tutorial/floatingpoint.html

https://docs.python.org/zh-cn/3.7/tutorial/appendix.html

本系列文章到此結(jié)束,敬請(qǐng)期待后續(xù)主題

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

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

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