關(guān)于我們
書單推薦
新書推薦
|
給所有人的Python(第4版)
本書由淺入深地從軟件安裝環(huán)境到基礎(chǔ)語法與應(yīng)用來講解面向?qū)ο竽_本語言Python。本書共13章,主要講解Python的語法以及Python的相關(guān)應(yīng)用,*后還比較了Python
2與Python 3之間的差別,以供讀者參考。
本書既可作為Python開發(fā)入門者的自學(xué)用書,也可作為高等院校相關(guān)專業(yè)的教學(xué)參考書。
近來不以軟件開發(fā)為專業(yè)的,也就是非工程師使用Python的情況漸漸增多。本書第四版將基礎(chǔ)講解部分大篇幅改寫得更加易讀易懂,便于讀者入門。
本書是面向?qū)ο竽_本語言Python的入門書。Python是一種在美國、歐洲、包括日本在內(nèi)的亞洲各國廣為使用的一種程序設(shè)計(jì)語言。Python不僅簡潔易懂,而且是一種可以在比較嚴(yán)謹(jǐn)?shù)某绦蛟O(shè)計(jì)中使用的語言。近年來,在以機(jī)器學(xué)習(xí)與深度學(xué)習(xí)deep learning)為代表的人工智能基礎(chǔ)領(lǐng)域,或是數(shù)據(jù)科學(xué)(datascience)領(lǐng)域中,Python也作為一種常用的程序設(shè)計(jì)語言而被大家所關(guān)注。例如,Google(谷歌)、
Microsoft(微軟)等知名企業(yè)都在使用Python。
本書是第4版修訂版,從問世以來,已經(jīng)過了10年。 第1版出版是在2006年,當(dāng)時(shí)正是一種新的Web萌芽與腳本語言都廣受關(guān)注的時(shí)代。在歐美國家,知名的Web服務(wù)在開發(fā)時(shí)使用Python的事例很多。但是在日本,Python還沒有很高的知名度。那時(shí)作為第一本Python日語書,第1版主要是將Python的優(yōu)點(diǎn)廣泛傳達(dá)給了日本社會。 第2版出版時(shí),正處于云概念被廣泛接受的時(shí)代。以虛擬機(jī)監(jiān)視器Xen、Google的云服務(wù)(cloud service)AppEngine為代表,在云領(lǐng)域中,Python也受到了廣泛關(guān)注。 在第3版中,以幾年前發(fā)布的Python 3為中心,大規(guī)模地修改了第2版。以Linux的包管理為代表,Python作為基礎(chǔ)被繼續(xù)使用。在第3版中,對革新后的新Python進(jìn)行了介紹。Python 3提高了一慣性,可以更安心、更長久地使用。 接下來是第4版。第4版增加了有關(guān)近年來廣受關(guān)注的數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)的章節(jié)。另外,近來不以軟件開發(fā)為專業(yè)的,也就是非工程師使用Python的情況漸漸增多?紤]到這一點(diǎn),本版將基礎(chǔ)講解部分大篇幅改寫得更加易讀易懂。 回首這10年,我認(rèn)為Python是時(shí)常引導(dǎo)時(shí)代的先驅(qū)者。從Web開始,云以及數(shù)據(jù)科學(xué)、人工智能等,Python總是開啟新技術(shù)的起點(diǎn)。介紹這樣優(yōu)秀的Python,是本書最大的使命。 最后,要對審查本書的巖井雅治、太田芳行、奧野慎吾、kabihiko、木村明治、鄉(xiāng)田mariko、櫻井駿、鈴木潤、高田美紀(jì)、高野隆一、中村讓、minakawamisaki、通口千洋、福島真太郎、松澤太郎(50音順序),以及本書的編輯、參與本書出版工作的所有工作人員表達(dá)最真摯的謝意。 同時(shí)也希望,通過本書,能有更多的人喜愛Python,喜愛indent。 寫給最深愛的妻子、兒子、女兒和狗狗,同時(shí)也寫給10年后的自己
柴田淳,2000年初起開始運(yùn)用Python進(jìn)行軟件系統(tǒng)的委托開發(fā),參與大型網(wǎng)站和出版社的CRM、谷歌推廣網(wǎng)站的后臺等的開發(fā)。目前專注于公司服務(wù)系統(tǒng)的開發(fā)和運(yùn)營。
第1章 程序設(shè)計(jì)語言Python 1
1.1 Python的魅力 1 1.1.1 Python很容易記憶 2 1.1.2 Python很容易使用 3 1.1.3 Python有廣闊的前景 4 1.2 Python(Anaconda)的下載和安裝… 6 1.2.1 什么是Anaconda 6 1.2.2 必要的學(xué)習(xí)環(huán)境7 1.2.3 在 Windows系統(tǒng)中安裝Anaconda 8 1.2.4 在macOS(OS X)系統(tǒng)中安裝Anaconda 9 1.2.5 在Linux系統(tǒng)中安裝 Anaconda 10 1.2.6 已經(jīng)安裝Python的情況 11 1.2.7 安裝本家版Python 11 1.3 交互式腳本(對話型腳本) 13 1.3.1 在 Windows系統(tǒng)中啟動(dòng)交互式腳本 13 1.3.2 在 macOS、Linux系統(tǒng)中啟動(dòng)交互式腳本14 1.3.3 輸入Python代碼15 1.3.4 關(guān)閉交互式腳本20 1.4 在文件中編寫Python程序 20 1.4.1 使用Editor(編輯器)編寫程序21 1.4.2 保存Python程序 21 1.4.3 在 Windows系統(tǒng)中運(yùn)行Python的腳本文件22 1.4.4 在 macOS、Linux系統(tǒng)中執(zhí)行Python的腳本文件 23 1.4.5 推薦的編輯器和選擇方法24 1.5 使用Jupyter Notebook 26 1.5.1 在 Windows、macOS系統(tǒng)中啟動(dòng)內(nèi)核 28 1.5.2 在Linux系統(tǒng)中啟動(dòng)內(nèi)核 28 1.5.3 使用主面板29 1.5.4 制作Notebook29 1.5.5 使用Notebook運(yùn)行程序 30 1.5.6 保存Notebook 32 1.5.7 結(jié)束Notebook 33 1.5.8 使用Jupyter Notebook的tmpnb 33 1.5.9 示例代碼的運(yùn)行方法34 第2章 用Python開始程序設(shè)計(jì)36 2.1 使用數(shù)值36 2.1.1 使用數(shù)值的四則運(yùn)算37 2.1.2 四則運(yùn)算和優(yōu)先順序38 2.2 使用變量38 2.2.1 定義變量38 2.2.2 使用變量進(jìn)行計(jì)算39 2.3 使用字符串41 2.3.1 定義字符串41 2.3.2 字符串的連接42 2.3.3 復(fù)合運(yùn)算符43 2.3.4 統(tǒng)一類型的Python風(fēng)格 44 2.3.5 字符串與數(shù)值的轉(zhuǎn)換(類型轉(zhuǎn)換) 45 2.4 使用列表47 2.4.1 定義列表47 2.4.2 指定索引取出元素48 2.4.3 列表的連接50 2.4.4 元素的置換和刪除50 2.4.5 使用切片取出多個(gè)元素52 2.4.6 列表的列表二維數(shù)組53 2.4.7 列表的合計(jì)、最大值和最小值55 2.4.8 查看列表長度56 2.5 用for語句進(jìn)行循環(huán)操作 57 2.6 用if語句進(jìn)行條件分支 61 2.6.1 比較數(shù)值63 2.6.2 比較字符串63 2.6.3 檢索字符串64 2.6.4 比較列表64 2.6.5 檢索列表元素65 2.6.6 使用else語句 65 2.7 使用函數(shù)69 2.7.1 什么是函數(shù)69 2.7.2 調(diào)用函數(shù)70 2.7.3 函數(shù)的參數(shù)70 2.7.4 函數(shù)的返回值(1) 71 2.7.5 定義函數(shù)72 2.7.6 定義參數(shù)74 2.7.7 函數(shù)的返回值(2) 75 2.7.8 本地變量76 2.8 使用模塊79 2.8.1 導(dǎo)入模塊80 2.8.2 import語句的as 81 2.8.3 使用了from的導(dǎo)入 81 2.8.4 模塊的查找方法82 第3章 掌握Python的基礎(chǔ)83 3.1 使用字典83 3.1.1 什么是字典83 3.1.2 使用鍵取出元素84 3.1.3 使用鍵替換元素85 3.1.4 添加新的鍵與值86 3.1.5 使用鍵刪除元素87 3.1.6 確認(rèn)鍵的存在88 3.1.7 使用鍵的循環(huán)89 3.2 使用set(集合) 90 3.2.1 定義set 91 3.2.2 求set的并集 91 3.2.3 求set的差集 92 3.2.4 求set的交集 92 3.2.5 求set的異或 93 3.2.6 set與列表 94 3.2.7 set與比較 94 3.3 使用元組95 3.4 if語句的應(yīng)用99 3.4.1 比較運(yùn)算符99 3.4.2 比較運(yùn)算符與True和False 99 3.4.3 關(guān)于比較的備忘錄 100 3.4.4 復(fù)雜的比較邏輯運(yùn)算 100 3.5 循環(huán)的應(yīng)用 101 3.5.1 使用while語句制作循環(huán) 101 3.5.2 使用了break語句和continue語句的循環(huán)控制 103 3.5.3 循環(huán)的else 105 3.6 函數(shù)的應(yīng)用 105 3.6.1 對函數(shù)定義默認(rèn)參數(shù) 106 3.6.2 參數(shù)的關(guān)鍵字指定 107 3.6.3 函數(shù)和本地變量 108 第4章 熟練使用內(nèi)置類型111 4.1 作為對象的內(nèi)置類型概述 111 4.1.1 什么是方法 111 4.1.2 作為對象的內(nèi)置類型 113 4.1.3 內(nèi)置的數(shù)據(jù)類型一覽 114 4.1.4 數(shù)據(jù)類型的分類 116 4.1.5 序 列 116 4.1.6 可更改和不可更改 117 4.1.7 set類型和字典類型117 4.2 操作數(shù)值類型 118 4.2.1 十六進(jìn)制的表示方法 118 4.2.2 二進(jìn)制的表示方法119 4.2.3 八進(jìn)制的表示方法 120 4.2.4 位運(yùn)算 121 4.3 熟練使用字符串類型 121 4.3.1 字符串的替換和刪除 121 4.3.2 split()方法和join()方法 122 4.3.3 轉(zhuǎn)義序列 124 4.3.4 raw字符串 126 4.3.5 字符串中可以使用的方法 126 4.3.6 字符串的格式化 128 4.4 熟練掌握列表類型和元組類型 132 4.4.1 給列表排序 132 4.4.2 自定義排列順序 133 4.4.3 解包代入 134 4.4.4 切片的步長數(shù) 135 4.4.5 使用了切片元素的代入和刪除135 4.4.6 列表中可以使用的方法 136 4.5 熟練使用set類型 137 4.6 熟練掌握字典類型 138 4.6.1 通過序列等制作字典 138 4.6.2 將兩個(gè)字典進(jìn)行組合 139 4.6.3 巧妙處理字典的鍵 139 4.6.4 靈活運(yùn)用字典中的方法 140 4.7 if語句和內(nèi)置類型142 4.8 for語句和內(nèi)置類型142 4.8.1 熟練使用range()函數(shù) 142 4.8.2 序列和循環(huán)計(jì)數(shù)器143 4.8.3 使用兩個(gè)序列的循環(huán) 144 4.9 函數(shù)和內(nèi)置類型 145 4.9.1 返回值和解包代入 145 4.9.2 在函數(shù)中接收參數(shù)列表 146 4.9.3 在函數(shù)中接收關(guān)鍵字參數(shù) 147 4.10 Python的字符串和日語 147 4.10.1 有關(guān)字符編碼的基礎(chǔ)知識147 4.10.2 Python和 Unicode 150 4.10.3 字節(jié)類型150 4.10.4 字符串向字節(jié)類型轉(zhuǎn)換152 4.10.5 字節(jié)類型向字符串類型轉(zhuǎn)換153 4.10.6 腳本文件的編碼指定153 4.10.7 編碼的判斷154 4.10.8 編碼和亂碼154 4.10.9 多字節(jié)字符和字符的分界156 4.11 Python的文件處理 156 4.11.1 文件和文件對象158 4.11.2 從文件中讀取160 4.11.3 寫入文件162 4.11.4 處理二進(jìn)制文件162 4.11.5 文件名稱的處理163 第5章 Python與函數(shù)式程序設(shè)計(jì) 165 5.1 什么是函數(shù)式程序設(shè)計(jì) 165 5.1.1 Python的語句和表達(dá)式 167 5.1.2 Lambda表達(dá)式 167 5.2 解析式 168 5.2.1 列表解析式 169 5.2.2 列表解析式的詳細(xì)介紹 169 5.2.3 在列表解析式中使用if 170 5.2.4 字典解析式 171 5.2.5 set解析式172 5.3 使用迭代 172 5.3.1 什么是迭代 172 5.3.2 迭代和延遲評價(jià) 173 5.4 使用生成器 175 5.4.1 定義生成器函數(shù) 176 5.4.2 生成器表達(dá)式 176 5.5 高階函數(shù)和裝飾器177 5.5.1 高階函數(shù) 177 5.5.2 裝飾器 179 第6章 類與面向?qū)ο箝_發(fā)181 6.1 在Python中使用類181 6.1.1 對象和類 181 6.1.2 由類制作對象(實(shí)例) 182 6.1.3 使用實(shí)例 183 6.1.4 對象和實(shí)例183 6.2 制作類184 6.2.1 定義類 185 6.2.2 實(shí)例的屬性 185 6.2.3 方法的定義與初始化方法__init__() 187 6.2.4 方法與第一參數(shù)self 188 6.2.5 屬性的隱蔽性 192 第7章 類的繼承與高級面向?qū)ο蠊δ?94 7.1 繼承類 194 7.1.1 指定超類 195 7.1.2 方法的重寫 195 7.1.3 初始化方法的重寫 196 7.1.4 得到使用super()的超類 197 7.1.5 插 槽 198 7.1.6 特 征 199 7.2 使用特殊方法 200 7.3 繼承內(nèi)置類型 206 第8章 模 塊209 8.1 創(chuàng)建模塊文件夾 209 8.1.1 導(dǎo)入模塊時(shí)的操作 210 8.1.2 僅在執(zhí)行文件時(shí)執(zhí)行的塊 211 8.1.3 類與模塊 212 8.2 模塊的層次(包) 213 8.2.1 包的本質(zhì) 213 8.2.2 創(chuàng)建包 214 8.3 使用模塊時(shí)的注意事項(xiàng) 214 8.3.1 使用from語句導(dǎo)入的弊端 214 8.3.2 模塊的搜索順序 214 8.4 使用第三方模塊 215 8.4.1 模塊的搜尋方法 215 8.4.2 使用pip安裝模塊 216 8.4.3 使用conda安裝模塊 217 8.4.4 模塊的種類 217 8.4.5 手動(dòng)安裝模塊 218 8.4.6 模塊的設(shè)置場所和Python的版本 218 第9章 作用域與對象221 9.1 命名空間、作用域221 9.1.1 作用域的規(guī)則 222 9.1.2 類、實(shí)例的作用域224 9.2 純粹面向?qū)ο笳Z言Python 225 9.2.1 對象與屬性 225 9.2.2 魔法函數(shù)dir()226 9.2.3 作為屬性的方法 227 9.2.4 全部都是對象 228 9.2.5 對象與類型228 9.2.6 對象與屬性 230 9.2.7 類、模塊與屬性231 9.2.8 對象和變量 231 9.2.9 對象與命名空間 232 第10章 異常處理 234 10.1 Python的異常處理 234 10.1.1 異常的發(fā)生234 10.1.2 捕獲異常235 10.1.3 with語句 237 10.1.4 異常與追溯237 10.1.5 引發(fā)(raise)異常238 10.1.6 顯示追溯238 10.2 常見錯(cuò)誤或異常與對策239 10.2.1 讀取程序時(shí)發(fā)生的錯(cuò)誤(SyntaxError) 240 10.2.2 程序執(zhí)行中發(fā)生的錯(cuò)誤(Exception) 240 第11章 使用標(biāo)準(zhǔn)庫 243 11.1 標(biāo)準(zhǔn)庫的導(dǎo)入243 11.2 數(shù)據(jù)結(jié)構(gòu)244 11.2.1 保持添加時(shí)順序的collections.OrderedDict 244 11.2.2 帶有默認(rèn)值的字典collections.defaultdict 245 11.2.3 協(xié)助列表sort的bisect 246 11.3 處理日期數(shù)據(jù)的datetime、calendar 247 11.3.1 日期與時(shí)刻和字符串249 11.3.2 日期與時(shí)刻的運(yùn)算和比較250 11.3.3 使用datetime.date類的方法 251 11.3.4 使用datetime.datetime類的方法 252 11.3.5 使用calendar模塊 252 11.4 正則表達(dá)式re 254 11.4.1 re模塊 254 11.4.2 Python的正則表達(dá)式 255 11.4.3 正則表達(dá)式的pattern字符串 255 11.4.4 使用正則表達(dá)式對象257 11.4.5 將模式傳遞給參數(shù),進(jìn)行正則表達(dá)式的處理 259 11.4.6 使用匹配對象260 11.4.7 正則表達(dá)式的示例261 11.5 獲取操作系統(tǒng)參數(shù)的sys 261 11.5.1 獲取命令行的參數(shù)261 11.5.2 程序的結(jié)束262 11.5.3 其他函數(shù)與變量262 11.6 獲得及操作文件、進(jìn)程等依賴 OS信息的OS 262 11.6.1 獲取、操作與進(jìn)程相關(guān)的信息 262 11.6.2 文件與目錄的操作263 11.6.3 進(jìn)程管理265 11.6.4 在交換平臺使用了路徑的操作266 11.7 使用數(shù)學(xué)函數(shù)mathrandom 267 11.7.1 math數(shù)學(xué)函數(shù)模塊 267 11.7.2 random生成隨機(jī)數(shù) 269 11.8 獲取因特網(wǎng)上數(shù)據(jù)的urllib 270 11.8.1 從 Web或FTP中獲取文件271 11.8.2 使用request.urlretrieve()函數(shù)的示例代碼 271 11.8.3 從 Web或FTP中讀取數(shù)據(jù)272 11.8.4 在urlopen()返回的對象中可以使用的方法 272 11.8.5 BASIC認(rèn)證 273 11.8.6 用POST方式傳輸數(shù)據(jù) 274 11.8.7 其他函數(shù)275 11.9 創(chuàng)建字符串庫虛擬文件的io.StringIO 276 11.10 CSV(逗號分隔值)文件的操作 277 11.11 對象持久化與序列化shelvepickle 278 11.11.1 將字典持久化的shelve 279 11.11.2 執(zhí)行對象持久化與序列化的pickle 280 11.12 處理JSON數(shù)據(jù)的json 282 11.12.1 將JSON轉(zhuǎn)換為Python的數(shù)據(jù)類型283 11.12.2 Python的數(shù)據(jù)類型轉(zhuǎn)換為JSON 283 11.12.3 json的使用示例 284 第12章 Python與數(shù)據(jù)科學(xué) 285 12.1 NumPy與 matplotlib 285 12.1.1 所謂的 NumPy與 matplotlib 285 12.1.2 使用NumPy 287 12.1.3 使用 matplotlib 290 12.2 使用NumPy 291 12.2.1 生成NumPy的array 291 12.2.2 使用數(shù)組的運(yùn)算293 12.2.3 訪問元素295 12.2.4 數(shù)組的連接295 12.2.5 復(fù)制數(shù)組296 12.3 使用 matplotlib 296 12.3.1 使用plot()來繪制圖表297 12.3.2 控制plot()的繪制299 12.3.3 加入字符300 12.4 將日本的人口可視化300 12.4.1 讀取人口數(shù)據(jù)301 12.4.2 繪制人口金字塔303 12.4.3 將圖表繪制在交互式中304 12.4.4 推算未來人口數(shù)量306 12.5 Python與機(jī)器學(xué)習(xí) 310 12.5.1 用機(jī)器學(xué)習(xí)進(jìn)行數(shù)值的預(yù)測311 12.5.2 機(jī)器學(xué)習(xí)的算法315 12.5.3 由姓名來判定性別316 12.5.4 機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)與Python 320 12.5.5 深度學(xué)習(xí)的登場和未來321 第13章 Python 2 323 13.1 Python 3與Python 2的不同點(diǎn)323 13.1.1 在Python 3中被削減掉的功能 324 13.1.2 在Python 2.7中可以使用的Python 3功能 324 13.1.3 在Python 3中改變了的功能 325 13.1.4 模塊的再配置、名稱變更 329 13.2 從Python 2到Python 3的遷移 330 13.3 結(jié)束語331
你還可能感興趣
我要評論
|