Python入門指南 中文版及官方英文鏈接:
- Python入門指南 (3.5.2)
http://www.pythondoc.com/pythontutorial3/ - Python Tutorial (3.5.2)
https://docs.python.org/3/tutorial/
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)?
- Python 標(biāo)準(zhǔn)庫(kù)
https://docs.python.org/3/library/ - Python 語(yǔ)言參考
https://docs.python.org/3/reference/
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ù)虎敦。