Python Tutorial筆記


Python入門指南 中文版及官方英文鏈接:

2.使用Python解釋器

  • Control-D
    文件結(jié)束符此蜈,讓解釋器以0狀態(tài)碼退出片择,相當(dāng)于exit()命令逆屡。
  • Control-P
    命令行編輯功能惜犀。
  • 為源文件指定不同的編碼:
# -*- coding: encoding -*-

3.Python簡(jiǎn)介

  • 交互模式中,最近一個(gè)表達(dá)式的值賦給變量_胀溺。

在Python中:

  • 字符串是序列類型,不可變。
  • 列表是序列類型,可變琳省。

4.深入Python流程控制

  • 循環(huán)可以有一個(gè)else子句迎吵;它在循環(huán)迭代完整個(gè)列表(對(duì)于for)或執(zhí)行條件為 false (對(duì)于while)時(shí)執(zhí)行,但循環(huán)被 break 中止的情況下不會(huì)執(zhí)行针贬。
  • break 語(yǔ)句击费,用于跳出最近的一級(jí) for 或 while 循環(huán)。
  • continue 語(yǔ)句桦他,表示循環(huán)繼續(xù)執(zhí)行下一次迭代蔫巩。
  • docstring 文檔字符串:函數(shù)體的第一行語(yǔ)句可以是可選的字符串文本。
  • 全局變量不能在函數(shù)中直接賦值(除非用 global 語(yǔ)句命名)快压。
  • Lambda表達(dá)式 創(chuàng)建一個(gè)匿名函數(shù)圆仔。

5.數(shù)據(jù)結(jié)構(gòu)

  • 列表對(duì)象方法:
list.append(x)
list.extend(L)
list.insert(i, x)
list.remove(x) # 刪除鏈表中值為 *x* 的第一個(gè)元素。如果沒(méi)有這樣的元素蔫劣,就會(huì)返回一個(gè)錯(cuò)誤坪郭。
list.pop([i])
list.clear()
list.index(x)
list.count(x)
list.sort() # 對(duì)鏈表中的元素就地進(jìn)行排序。與sorted(list)有區(qū)別脉幢。
list.reverse() # 就地倒排鏈表中的元素歪沃。
list.copy()
  • 要實(shí)現(xiàn)隊(duì)列,使用 collections.deque嫌松,它為在首尾兩端快速插入和刪除而設(shè)計(jì)沪曙。
  • 列表推導(dǎo)式:
[expression for item in iterable if condition]
  • 元組是序列,不可變萎羔。
  • 集合(set)是一個(gè)無(wú)序不重復(fù)元素的集液走。
  • 集合推導(dǎo)式:
{expression for expression in iterable}
  • 字典推導(dǎo)式:
{key_expression: value_expression for expression in iterable}
  • 字典方法:
dict.keys()
dict.values()
dict.items()

6.模塊

  • 模塊的搜索路徑(sys.path):當(dāng)前目錄;PYTHONPATH贾陷;安裝目錄育灸。
  • dir()函數(shù):按模塊名搜索模塊定義,返回一個(gè)字符串類型的存儲(chǔ)列表昵宇。
  • 包:
from package import module

7.輸入和輸出

  • repr()函數(shù):將值轉(zhuǎn)化為供解釋器讀取的形式磅崭。
  • 字符串格式化方法:(1)str.format();(2)% 瓦哎。
  • 文件讀寫:
f = open(filename, mode)
# mode = "r", "w", "a", "r+", "rb"...
f.write(string)
f.tell # 返回文件對(duì)象在文件中的指針位置
f.seek(offset, from_what) # 移動(dòng)指針
# from_what 值為 0 表示自文件起始處開(kāi)始砸喻,1 表示自當(dāng)前文件指針位置開(kāi)始柔逼,2 表示自文件末尾開(kāi)始
f.close()
  • with語(yǔ)句處理文件對(duì)象,文件用完會(huì)自動(dòng)關(guān)閉割岛。
  • json:
    序列化:將Python 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為字符串表示形式愉适;
    反序列化:從字符串表示形式重新構(gòu)建數(shù)據(jù)結(jié)構(gòu)。
import json
json.dump(x, fileobject)
x = json.load(fileobject)

8.錯(cuò)誤和異常

  • 異常處理:
try...except...[else]...[finally]
# else子句在未發(fā)生異常時(shí)執(zhí)行癣漆。
# finally子句在任何情況都會(huì)執(zhí)行维咸。
  • raise 語(yǔ)句允許程序員強(qiáng)制拋出一個(gè)指定的異常。

9.類

  • 命名空間是從命名到對(duì)象的映射惠爽。
  • 作用域 就是一個(gè) Python 程序可以直接訪問(wèn)命名空間的正文區(qū)域癌蓖。
  • 如果沒(méi)有使用global語(yǔ)法,其賦值操作總是在最里層的作用域(局部作用域)婚肆。global語(yǔ)句用以指明某個(gè)特定的變量為全局作用域租副,并重新綁定它。nonlocal 語(yǔ)句用以指明某個(gè)特定的變量為封閉作用域较性,并重新綁定它用僧。
  • 實(shí)例變量用于對(duì)每一個(gè)實(shí)例都是唯一的數(shù)據(jù);類變量用于類的所有實(shí)例共享的屬性和方法赞咙。
  • 函數(shù) isinstance()用于檢查實(shí)例類型责循。
  • 函數(shù) issubclass()用于檢查類繼承。
  • 迭代器
    iter() 函數(shù)返回一個(gè)定義了next()方法的迭代器對(duì)象攀操。
  • 生成器
    Generator是創(chuàng)建迭代器的簡(jiǎn)單而強(qiáng)大的工具沼死。它們寫起來(lái)就像是正規(guī)的函數(shù),需要返回?cái)?shù)據(jù)的時(shí)候使用 yield 語(yǔ)句崔赌。

10.Python標(biāo)準(zhǔn)庫(kù)概覽

  • os 模塊提供了很多與操作系統(tǒng)交互的函數(shù)意蛀。
import os
os.getcwd()
os.chdir('/server/accesslogs')
os.system('mkdir today')
  • glob 模塊提供了一個(gè)函數(shù)用于從目錄通配符搜索中生成文件列表:
import glob
glob.glob('*.py')
  • 命令行參數(shù)sys.argv。
  • 正則表達(dá)式模式匹配:re模塊健芭。
  • math 模塊為浮點(diǎn)運(yùn)算提供了對(duì)底層C函數(shù)庫(kù)的訪問(wèn)县钥。
  • random 提供了生成隨機(jī)數(shù)的工具。
  • 用于處理從 urls 接收的數(shù)據(jù)的 urllib.request慈迈。
  • 發(fā)送電子郵件的 smtplib若贮。
  • datetime 模塊為日期和時(shí)間處理同時(shí)提供了簡(jiǎn)單和復(fù)雜的方法。
  • 性能度量:timeit痒留。
  • 質(zhì)量控制(測(cè)試):unittest 模塊谴麦; doctest 模塊。

11.標(biāo)準(zhǔn)庫(kù)概覽(2)

  • 模板:string.Template類
>>> from string import Template
>>> t = Template('${village}folk send $$10 to $cause.') # $為占位符(模板子類還可指定自定義占位符)
>>> t.substitute(village='Nottingham', cause='the ditch fund')
'Nottinghamfolk send $10 to the ditch fund.'
  • 十進(jìn)制浮點(diǎn)數(shù)算法 decimal.Decimal伸头,用于精確計(jì)算匾效。

10.虛擬環(huán)境和包

  • pyvenv創(chuàng)建虛擬環(huán)境:
pyvenv tutorial-env # 創(chuàng)建一個(gè) virtualenv
source tutorial-env/bin/activate # 在 Unix 或者 MacOS 上激活虛擬環(huán)境
tutorial-env/Scripts/activate # Windows上激活虛擬環(huán)境
  • pip常用指令:
pip install novas
pip install requests==2.6.0
pip install --upgrade requests
pip uninstall requests
pip show requests
pip list
pip freeze > requirements.txt # 生成一個(gè)類似需要安裝的包的列表
pip install -r requirements.txt # 安裝所有必須的包

13.接下來(lái)?

14. 交互式輸入行編輯歷史回溯

  • 使用Tab補(bǔ)全

15.浮點(diǎn)數(shù)算法:爭(zhēng)議和限制

  • 0.1

即使打印的結(jié)果看上去是精確的1/10恤磷,真正存儲(chǔ)的值是最近似的二進(jìn)制小數(shù)面哼。這是二進(jìn)制浮點(diǎn)數(shù)的自然性質(zhì):它不是Python中的一個(gè)bug野宜,也不是代碼中的bug。

>>> .1 + .1 + .1 == .3
False
  • 對(duì)于需要精確十進(jìn)制表示的情況魔策,可以嘗試使用decimal模塊匈子,它實(shí)現(xiàn)的十進(jìn)制運(yùn)算適合會(huì)計(jì)方面的應(yīng)用和高精度要求的應(yīng)用。
  • fractions 模塊支持另外一種形式的運(yùn)算闯袒,它實(shí)現(xiàn)的運(yùn)算基于有理數(shù)虎敦。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市政敢,隨后出現(xiàn)的幾起案子其徙,更是在濱河造成了極大的恐慌,老刑警劉巖堕仔,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異晌区,居然都是意外死亡摩骨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門朗若,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恼五,“玉大人,你說(shuō)我怎么就攤上這事哭懈≡致” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵遣总,是天一觀的道長(zhǎng)睬罗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)旭斥,這世上最難降的妖魔是什么容达? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮垂券,結(jié)果婚禮上花盐,老公的妹妹穿的比我還像新娘。我一直安慰自己菇爪,他們只是感情好算芯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著凳宙,像睡著了一般熙揍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氏涩,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天诈嘿,我揣著相機(jī)與錄音堪旧,去河邊找鬼。 笑死奖亚,一個(gè)胖子當(dāng)著我的面吹牛淳梦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昔字,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼爆袍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了作郭?” 一聲冷哼從身側(cè)響起陨囊,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夹攒,沒(méi)想到半個(gè)月后蜘醋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咏尝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年压语,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编检。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胎食,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出允懂,到底是詐尸還是另有隱情厕怜,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布蕾总,位于F島的核電站粥航,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏生百。R本人自食惡果不足惜躁锡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望置侍。 院中可真熱鬧映之,春花似錦、人聲如沸蜡坊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秕衙。三九已至蠢甲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間据忘,已是汗流浹背鹦牛。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工搞糕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曼追。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓窍仰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親礼殊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驹吮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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