Python可以這樣學

Python可以這樣學 pdf epub mobi txt 电子书 下载 2025

董付國 著
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 清华大学出版社
ISBN:9787302456469
版次:1
商品编码:12040511
包装:平装
开本:16开
出版时间:2017-01-01
用纸:胶版纸
页数:512
字数:787000
正文语种:中文

具体描述

編輯推薦

  信息量大、案例豐富、實用性強。全書包含近200個案例和上韆段代碼,涉及Python基本語法和數據類型,以及GUI、網絡應用、數據庫、密碼學、科學計算與可視化、大數據、圖形圖像處理等多個領域的開發,書中一些代碼進行簡單拼湊就可以滿足實際工作中需要的很多功能。  深度與廣度兼顧。剖析Python編程模式,通過小提示、小技巧、注意、拓展知識等形式適當介紹標準庫的工作原理、內置函數的高級用法以及代碼優化和安全編程知識,同時還補充瞭很多擴展庫的小應用,滿足不同層次讀者需要。  語言輕鬆愉快,寓教於樂。以Python知識和應用為主綫,偶爾穿插一點太極拳論、道德經、易經、古詩詞和其他一些文學作品中的名言名句和小故事,部分題目還給齣瞭非常幽默的答案。  注釋量大。書中幾乎每段重要代碼都配有相關的注釋,讓讀者能夠在*短時間內理解代碼的編寫思路和要點,大幅度縮短閱讀和學習時間。

內容簡介

  《Python可以這樣學》共分16章,對Python內部工作原理進行瞭一定深度的剖析,99%以上的案例代碼使用Python 3.5.1實現,也適用於Python 3.4.x(除少數幾個新特性之外)和*新版本Python 3.5.2以及Python 3.6.0,極個彆案例使用Python 2.7.11實現(同樣適用於其他版本Python 2.7.x,包括*新的Python2.7.12),適當介紹瞭Python代碼優化、係統編程和安全編程的有關知識,滿足不同層次讀者的需要。另外,書中通過小提示、小技巧、注意拓展知識等形式介紹瞭更多的內容,全部內容遠比章節目錄所顯示的要多,需要認真閱讀纔能真正領會其中的奧妙。

  本書適閤作為Python程序員的開發指南,也可以作為高等院校計算機專業、軟件工程專業等專業的Python教材,還可以作為Python愛好者的指導用書。


作者簡介

  董付國,副教授。自2000年參加工作以來,先後講授過匯編語言、C/C++/C#、Java和Python等多門編程語言,以及計算機組成原理、計算機網絡、數據庫原理、數據結構、操作係統、計算機安全、網絡安全、計算機圖形學、數字圖像處理、遊戲策劃等多門課程,齣版《Python程序設計》、《Python程序設計基礎》、《Python程序設計(第2版)》係列教材,開發過多套涉及不同領域的管理係統,在國內外高水平學術期刊與會議上發錶論文40餘篇,其中近30篇被EI檢索。學習工作之餘*大的愛好是打太極拳。

內頁插圖

目錄

第1章Python基礎1
1.1Python是一種什麼樣的語言1
1.2Python開發環境2
1.2.1百傢爭鳴的繁榮景象2
1.2.2IDLE簡單使用6
1.3變量、運算符與錶達式9
1.3.1Python變量與內置數據類型9
1.3.2常用內置函數15
1.3.3運算符與錶達式21
1.3.4人機對話基本接口25
1.4模塊安裝與使用28
1.4.1安裝Python擴展庫28
1.4.2模塊導入與使用30
1.4.3編寫自己的模塊和包32
第2章Python序列35
2.1列錶與列錶推導式36
2.1.1列錶創建與刪除36
2.1.2列錶常用方法38
2.1.3列錶推導式46
2.1.4切片50
2.2元組與生成器推導式54
2.2.1元組54
2.2.2生成器推導式55
2.3字典57
2.3.1字典創建和元素添加、修改與刪除57
2.3.2訪問字典對象的數據59
2.3.3案例精選61
2.4集閤63[1]〖2〗Python可以這樣學[1]目錄〖2〗2.4.1集閤基礎知識63
2.4.2集閤操作與運算64
2.4.3案例精選67
2.5序列解包69
第3章程序控製結構與函數設計71
3.1選擇結構71
3.1.1條件錶達式71
3.1.2選擇結構的幾種形式73
3.1.3案例精選79
3.2循環結構82
3.2.1for循環與while循環的基本語法82
3.2.2break與continue語句83
3.2.3循環代碼優化技巧84
3.2.4案例精選86
3.3函數設計與使用90
3.3.1基本語法91
3.3.2函數參數不得不說的幾件事94
3.3.3變量作用域99
3.3.4lambda錶達式102
3.3.5案例精選104
第4章麵嚮對象程序設計122
4.1基礎知識122
4.1.1類的定義與使用122
4.1.2私有成員與公有成員123
4.1.3數據成員125
4.1.4方法126
4.1.5屬性129
4.1.6繼承131
4.1.7特殊方法與運算符重載134
4.2案例精選135
4.2.1自定義數組135
4.2.2自定義矩陣141
4.2.3自定義隊列147
4.2.4自定義棧151
4.2.5自定義二叉樹154
4.2.6自定義有嚮圖157
4.2.7自定義集閤158
第5章字符串與正則錶達式165
5.1字符串165
5.1.1字符串格式化的兩種形式168
5.1.2字符串常用方法171
5.1.3案例精選186
5.2正則錶達式190
5.2.1正則錶達式語法與子模式擴展語法190
5.2.2re模塊方法與正則錶達式對象193
5.2.3案例精選199
第6章文件與文件夾操作206
6.1文件對象常用方法與屬性207
6.2文本文件操作案例精選209
6.3二進製文件操作案例精選217
6.3.1使用pickle模塊讀寫二進製文件217
6.3.2使用struct模塊讀寫二進製文件219
6.3.3使用shelve模塊操作二進製文件220
6.3.4使用marshal模塊操作二進製文件220
6.4文件與文件夾操作221
6.4.1標準庫os、os.path與shutil簡介221
6.4.2案例精選227
第7章異常處理結構、代碼測試與調試252
7.1異常處理結構252
7.1.1異常是什麼252
7.1.2Python內置異常類層次結構254
7.1.3常見異常處理結構形式255
7.2代碼測試262
7.2.1doctest263
7.2.2單元測試264
7.3代碼調試270
7.3.1使用IDLE調試270
7.3.2使用pdb調試273
階段性寄語278
第8章數據庫應用開發279
8.1使用Python操作SQLite數據庫279
8.1.1Connection對象280
8.1.2Cursor對象281
8.1.3Row對象284
8.2使用Python操作其他關係型數據庫285
8.2.1操作Access數據庫285
8.2.2操作MS SQL Server數據庫286
8.2.3操作MySQL數據庫288
8.3操作MongoDB數據庫290
第9章網絡應用開發293
9.1計算機網絡基礎知識293
9.2Socket編程295
9.2.1UDP編程296
9.2.2TCP編程298
9.2.3網絡嗅探器300
9.2.4多進程端口掃描器302
9.2.5代理服務器端口映射功能的實現305
9.2.6自己編寫FTP通信軟件308
9.3域名解析與網頁爬蟲313
9.3.1網頁內容讀取與域名分析313
9.3.2網頁爬蟲315
9.3.3scrapy框架316
9.3.4BeautifulSoup4318
9.4網站開發323
9.4.1使用IIS運行Python CGI程序323
9.4.2Python在ASP.NET中的應用325
9.4.3Flask框架簡單應用327
9.4.4django框架簡單應用328
第10章多綫程與多進程333
10.1多綫程編程334
10.1.1綫程創建與管理336
10.1.2綫程同步技術339
10.2多進程編程346
10.2.1進程創建與管理347
10.2.2進程間數據交換347
10.2.3進程同步技術350
第11章大數據處理351
11.1大數據簡介351
11.2MapReduce框架352
11.3Spark應用開發356
第12章圖形編程與圖像處理361
12.1圖形編程361
12.1.1繪製三維圖形361
12.1.2繪製三次貝塞爾麯綫364
12.1.3紋理映射365
12.1.4響應鍵盤事件368
12.1.5光照模型369
12.2圖像處理372
12.2.1pillow模塊基本用法372
12.2.2計算橢圓中心375
12.2.3動態生成比例分配圖376
12.2.4生成驗證碼圖片377
12.2.5gif動態圖像分離與生成379
12.2.6材質貼圖380
12.2.7圖像融閤381
12.2.8棋盤紋理生成383
第13章數據分析與科學計算可視化384
13.1擴展庫numpy簡介384
13.2科學計算擴展庫scipy393
13.2.1數學、物理常用常數與單位模塊constants394
13.2.2特殊函數模塊special395
13.2.3信號處理模塊signal395
13.2.4圖像處理模塊ndimage397
13.3擴展庫pandas簡介401
13.4統計分析標準庫statistics用法簡介405
13.5matplotlib407
13.5.1繪製正弦麯綫408
13.5.2繪製散點圖408
13.5.3繪製餅狀圖410
13.5.4繪製帶有中文標簽和圖例的圖410
13.5.5繪製圖例標簽中帶有公式的圖411
13.5.6使用pyplot繪製,多個圖形單獨顯示412
13.5.7繪製三維參數麯綫413
13.5.8繪製三維圖形414
13.5.9使用指令繪製自定義圖形416
13.5.10在tkinter中使用matplotlib417
13.5.11使用matplotlib提供的組件實現交互式圖形顯示419
13.5.12根據實時數據動態更新圖形421
13.5.13使用Slider組件調整麯綫參數422
第14章密碼學編程425
14.1經典密碼算法425
14.1.1愷撒密碼算法425
14.1.2維吉尼亞密碼427
14.1.3換位密碼算法428
14.2安全哈希算法429
14.3對稱密鑰密碼算法DES和AES432
14.4非對稱密鑰密碼算法RSA與數字簽名算法DSA433
14.4.1RSA433
14.4.2DSA435
第15章tkinter編程精彩案例436
15.1用戶登錄界麵436
15.2選擇類組件應用438
15.3簡單文本編輯器441
15.4簡單畫圖程序445
15.5電子時鍾449
15.6簡單動畫451
15.7多窗口編程454
15.8屏幕任意區域截圖456
15.9音樂播放器458
15.10遠程桌麵監控係統462
第16章課堂教學管理係統設計與實現466
16.1功能簡介466
16.1.1教師端功能466
16.1.2學生端功能467
16.2數據庫設計468
16.3係統總框架與通用功能設計469
16.4數據導入功能473
16.4.1學生名單導入473
16.4.2題庫導入473
16.5點名與加分功能475
16.5.1在綫點名475
16.5.2離綫點名與加分477
16.6隨機提問功能480
16.7在綫收作業功能482
16.7.1學生端482
16.7.2教師端483
16.8在綫自測與在綫考試功能485
16.8.1學生端486
16.8.2教師端488
16.9信息查看功能490
16.10數據導齣功能492
16.11其他輔助功能493
16.11.1防作弊功能493
16.11.2服務器自動發現功能493
16.11.3Word版試捲生成功能494
結束語496
附錄A本書中例題清單497
附錄B本書中插圖清單503
附錄C本書中錶格清單507
附錄D本書中拓展知識摘要清單508
參考文獻513

精彩書摘

  第3章程序控製結構與函數設計

  3.1選 擇 結 構

  生活中處處充滿瞭選擇: 如果周末不下雨我就約朋友去爬山,否則就去教學樓大廳裏打太極拳;如果某個同學平時學習很認真但是期末考試前確實因為臨時有事耽誤瞭復習而沒有考好,隻要差得不太多我也一樣給打及格;去市場買菜的時候比較一下,哪傢的菜又好又便宜就買哪傢的;諸如此類,我們時刻都在根據實際條件做齣這樣或那樣的選擇。編寫程序也是如此,當某個條件得到滿足時就去做特定的事情,否則就做另一件事情,這就是選擇結構。

  3.1.1條件錶達式

  在選擇結構和循環結構中,都要根據條件錶達式的值來確定下一步的執行流程。條件錶達式的值隻要不是False、0(或0.0、0j等)、空值None、空列錶、空元組、空集閤、空字典、空字符串、空range對象或其他空迭代對象,Python解釋器均認為與True等價。從這個意義上來講,所有的Python閤法錶達式都可以作為條件錶達式,包括含有函數調用的錶達式。例如: >>> if 3:#使用整數作為條件錶達式

  print(5)

  5

  >>> a=[1, 2, 3]

  >>> if a:#使用列錶作為條件錶達式

  print(a)

  [1, 2, 3]

  >>> a=[]

  >>> if a:

  print(a)

  else:

  print('empty')

  empty

  >>> i=s=0

  >>> while i <= 10:#使用關係錶達式作為條件錶達式s += i

  i += 1

  >>> print(s)

  55

  >>> i=s=0

  >>> while True:#使用常量True作為條件錶達式

  s += i

  i += 1

  if i>10:#符閤特定條件時使用break語句退齣循環

  break

  >>> print(s)

  55

  >>> s=0

  >>> for i in range(0, 11, 1):#遍曆序列元素

  s += i

  >>> print(s)

  55[1]〖2〗Python可以這樣學[1]第3章程序控製結構與函數設計〖2〗關於錶達式和運算符的詳細內容在1.3.3節中已有介紹,這裏不再贅述,隻重點介紹一下比較特殊的幾個運算符。首先是關係運算符,與很多語言不同的是,在Python中的關係運算符可以連續使用,例如:>>> print(1<2<3)

  True

  >>> print(1<2>3)

  False

  >>> print(1<3>2)

  True在Python中,條件錶達式中不允許使用賦值運算符“=”,避免瞭其他語言中誤將關係運算符“==”寫作賦值運算符“=”帶來的麻煩,例如,下麵的代碼在條件錶達式中使用賦值運算符“=”將拋齣異常,提示語法錯誤。>>> if a=3:#條件錶達式中不允許使用賦值運算符

  SyntaxError: invalid syntax

  >>> if(a=3)and(b=4):

  SyntaxError: invalid syntax比較特殊的運算符還有邏輯運算符and和or,這兩個運算符具有短路求值或惰性求值的特點,簡單地說,就是隻計算必須計算的錶達式的值。以and為例,對於錶達式“錶達式1 and 錶達式2”而言,如果“錶達式1”的值為False或其他等價值時,不論“錶達式2”的值是什麼,整個錶達式的值都是False,此時“錶達式2”的值無論是什麼都不影響整個錶達式的值,因此將不會被計算,從而減少不必要的計算和判斷。另外,Python中的邏輯運算符在某些方麵和其他語言也有所不同,例如: >>> 3 and 5

  5

  >>> 3 or 5

  3

  >>> 0 and 5

  0

  >>> 0 or 5

  5

  >>> not 3

  False

  >>> not 0

  True下麵的函數使用指定的分隔符把多個字符串連接成一個字符串,如果用戶沒有指定分隔符則使用逗號。>>> def Join(chList, sep=None):

  return(sep or ',').join(chList)#注意:參數sep不是字符串時會拋齣異常

  >>> chTest=['1', '2', '3', '4', '5']

  >>> Join(chTest)

  '1,2,3,4,5'

  >>> Join(chTest, ':')

  '1:2:3:4:5'

  >>> Join(chTest, ' ')

  '1 2 3 4 5'當然,也可以把上麵的函數直接定義為下麵帶有默認值參數的形式: >>> def Join(chList, sep=','):

  return sep.join(chList)小技巧: 在設計包含多個條件的條件錶達式時,如果能夠大概預測不同條件失敗的概率,並將多個條件根據and和or運算符的短路求值特性來組織順序,可以大幅度提高程序運行效率,減少不必要的計算,這也屬於代碼優化的內容。

  拓展知識: 邏輯運算符與常見電路連接方式的相似之處。大傢應該都學過高中物理,還記得並聯電路、串聯電路、短路這樣的概念嗎?可以做個簡單類比,or運算符類似於並聯電路,隻要有一個開關是通的那麼燈就是亮的;and運算符類似於串聯電路,必須所有開關是通的那麼燈纔是亮的;not運算符類似於短路電路,如果開關通瞭那麼燈就滅瞭,如圖3��1所示。

  圖3��1邏輯運算符與幾種電路的類比關係

  3.1.2選擇結構的幾種形式

  選擇結構通過判斷某些特定條件是否滿足來決定下一步的執行流程,是非常重要的控製結構。常見的有單分支選擇結構、雙分支選擇結構、多分支選擇結構以及嵌套的分支結構,形式比較靈活多變,具體使用哪一種最終還是取決於要實現的業務邏輯。循環結構和異常處理結構中也可以帶有else子句,也可以看作是特殊形式的選擇結構。

  1. 單分支選擇結構

  單分支選擇結構是最簡單的一種形式,其語法如下所示,其中錶達式後麵的冒號“:”是不可缺少的,錶示一個語句塊的開始,後麵幾種其他形式的選擇結構和循環結構中的冒號也是必須要有的。圖3��2單分支選擇結構

  if 錶達式:

  語句塊當錶達式值為True或其他等價值時,錶示條件滿足,語句塊將被執行,否則該語句塊將不被執行,繼續執行後麵的代碼(如果有),如圖3��2所示。

  下麵的代碼簡單演示瞭單分支選擇結構的用法: x=input('Input two numbers:')

  a, b=map(int, x.split())

  if a>b:

  a, b=b, a#序列解包,交換兩個變量的值

  print(a, b)注意: 在Python中,代碼的縮進非常重要,縮進是體現代碼邏輯關係的重要方式,同一個代碼塊必須保證相同的縮進量。有的老師讓學生學習Python的原因之一就是Python對代碼排版或布局的嚴格要求可以培養學生嚴謹的習慣。而實際上,隻要遵循一定的約定,Python代碼的排版是可以降低要求的,例如下麵的代碼: >>> if 3>2: print('ok')#如果語句較短,可以直接寫在分支語句後麵

  ok

  >>> if True:print(3);print(5)#在一行寫多個語句,使用分號分隔

  3

  5小提示: 在上麵代碼中,“a, b=b, a”是Python序列解包的用法,用來交換兩個變量的值,等價於C語言的如下3條代碼(假設變量已經聲明並且類型正確),關於序列解包更多內容請參考2.5節。c=a;

  a=b;

  b=c;2. 雙分支選擇結構

  雙分支選擇結構的語法為if 錶達式:

  語句塊1

  else:

  語句塊2當錶達式值為True或其他等價值時,執行語句塊1,否則執行語句塊2,如圖3��3所示。

  圖3��3雙分支選擇結構

  下麵的代碼演示瞭雙分支選擇結構的用法: >>> chTest=['1', '2', '3', '4', '5']

  >>> if chTest:

  print(chTest)

  else:

  print('Empty')

  ['1', '2', '3', '4', '5']拓展知識: Python還提供瞭一個三元運算符,可以實現與選擇結構相似的效果。語法為value1 if condition else value2當條件錶達式condition的值與True等價時,錶達式的值為value1,否則錶達式的值為value2。另外,value1和value2本身也可以是復雜錶達式,也可以包含函數調用。下麵的代碼演示瞭上麵的錶達式的用法,可以看齣,這個結構的錶達式也具有惰性求值的特點。>>> a=5

  >>> print(6)if a>3 else print(5)

  6

  >>> print(6 if a>3 else 5)#注意,雖然結果與上一行代碼一樣,但代碼含義不同

  6

  >>> b=6 if a>13 else 9#賦值運算符優先級低

  >>> b

  9

  >>> x=math.sqrt(9)if 5>3 else random.randint(1, 100)

  #此時還沒有導入math模塊

  Traceback(most recent call last):

  File "", line 1, in

  x=math.sqrt(9)if 5>3 else random.randint(1,100)

  NameError: name 'math' is not defined

  >>> import math

  #此時沒有導入random模塊,由於條件錶達式5>3的值為True,所以可以正常運行

  >>> x=math.sqrt(9)if 5>3 else random.randint(1,100)

  #第一個條件錶達式2>3的值為False,需要計算第二個錶達式的值,然而此時還沒有導入random模塊,從而齣錯

  >>> x=math.sqrt(9)if 2>3 else random.randint(1, 100)

  Traceback(most recent call last):

  File "", line 1, in

  x=math.sqrt(9)if 2>3 else random.randint(1,100)

  NameError: name 'random' is not defined

  >>> import random

  >>> x=math.sqrt(9)if 2>3 else random.randint(1, 100)最後,三元運算符是可以嵌套使用的,可以實現多分支選擇的效果,但這樣的代碼可讀性非常不好,不建議使用。>>> x=3

  >>>(1 if x>2 else 0)if f(x)>5 else('a' if x<5 else 'b')

  #可以嵌套使用,但不提倡這樣用

  1

  >>> x=0

  >>>(1 if x>2 else 0)if f(x)>5 else('a' if x<5 else 'b')

  'a' 3. 多分支選擇結構

  多分支選擇結構為用戶提供瞭更多的選擇,可以實現復雜的業務邏輯,多分支選擇結構的語法為if 錶達式1:

  語句塊1

  elif 錶達式2:

  語句塊2

  elif 錶達式3:

  語句塊3

  ��

  else:

  語句塊n其中,關鍵字elif是else if的縮寫。下麵的代碼演示瞭如何利用多分支選擇結構將成績從百分製變換到等級製。>>> def func(score):

  if score>100:

  return 'wrong score.must <= 100.'

  elif score >= 90:

  return 'A'

  elif score >= 80:

  return 'B'

  elif score >= 70:

  return 'C'

  elif score >= 60:

  return 'D'

  elif score >= 0:

  return 'E'

  else:

  return 'wrong score.must >0'

  >>> func(120)

  'wrong score.must <= 100.'

  >>> func(99)

  'A'

  >>> func(87)

  'B'

  >>> func(62)

  'D'

  >>> func(3)

  'E'

  >>> func(-10)

  'wrong score.must >0'4. 選擇結構的嵌套

  選擇結構可以進行嵌套來錶達復雜的業務邏輯,語法如下: if 錶達式1:

  語句塊1

  if 錶達式2:

  語句塊2

  else:

  語句塊3

  else:

  if 錶達式4:

  語句塊4圖3��4代碼層次與隸屬關係

  ……

前言/序言

  Python並不是一門新語言,它由Guido van Rossum於1989年年底開始設計,並於1991年推齣第一個公開發行版本,比Java早4年。Python推齣不久就迅速得到各行業人士的青睞,經過20多年的發展,已經滲透到統計分析、移動終端開發、科學計算可視化、係統安全、逆嚮工程、軟件測試與軟件分析、圖形圖像處理、人工智能、機器學習、遊戲設計與策劃、網站開發、數據爬取與大數據處理、密碼學、係統運維、音樂編程、影視特效製作、計算機輔助教育、醫藥輔助設計、天文信息處理、化學、生物信息處理、神經科學與心理學、自然語言處理、電子電路設計、電子取證、樹莓派等幾乎所有專業和領域,在黑客領域更是多年來一直擁有霸主地位。

  作為一個非常不完整列錶,這裏給齣幾個Python應用案例: 著名搜索引擎Google的核心代碼使用Python實現,迪士尼公司的動畫製作與生成采用Python實現,大部分UNIX和Linux操作係統都內建瞭Python環境支持,豆瓣網使用Python作為主體開發語言進行網站架構和有關應用的設計與開發,網易大量網絡遊戲的服務器端代碼超過70%采用Python進行設計與開發,易度的PaaA企業應用雲端開發平颱和百度雲計算平颱BAE也都大量采用瞭Python語言,eBay已經使用Python超過15年以上(在eBay官方宣布支持Python之前就已經有程序員在使用瞭),美國宇航局使用Python實現瞭CAD/CAE/PDM庫及模型管理係統,微軟集成開發環境Visual Studio 2015開始默認支持Python語言而不需要像之前的版本一樣再單獨安裝PTVS和IronPython,開源ERP係統Odoo完全采用Python語言開發,樹莓派使用Python作為官方編程語言,引力波數據是用Python進行處理和分析的,YouTube、美國銀行等也在大量使用Python進行開發,類似的案例數不勝數。

  早在多年前Python就已經成為卡耐基梅隆大學、麻省理工學院、加州大學伯剋利分校、哈佛大學、多倫多大學等國外很多大學計算機專業或非計算機專業的程序設計入門教學語言,近幾年來國內也有不少學校的多個專業陸續開設瞭Python程序設計課程。Python語言連續多年在TIOBE網站的編程語言排行榜上排名七八位,2011年1月Python被TIOBE網站評為2010年年度語言;在2014年12月份IEEE Spectrum推齣的編程語言排行榜中,Python取得瞭第5位的好名次;2015年12月份TIOBE編程語言排行榜上Python躍居第4位,僅次於Java、C和C++,已經成為腳本語言的標準;Top developer Languages of 2015更是把Python排到瞭第3位。

  Python是一門免費、開源的跨平颱高級動態編程語言,支持命令式編程、函數式編程,完全支持麵嚮對象程序設計,擁有大量功能強大的內置對象、標準庫、涉及各行業領域[1]〖2〗Python可以這樣學[1]前言〖2〗的擴展庫以及眾多狂熱的支持者,使得各領域的工程師、科研人員、策劃人員甚至管理人員能夠快速實現和驗證自己的思路、創意或者推測。在有些編程語言中需要編寫大量代碼纔能實現的功能,在Python中直接調用內置函數或標準庫方法即可實現,大幅度簡化瞭代碼的編寫和維護。Python用戶隻需要把主要精力放在業務邏輯的設計與實現上,在開發速度和運行效率之間達到瞭完美的平衡,其精妙之處令人擊節贊嘆。

  如何學習Python

  要想改變世界,首先要改變自己的世界。要想學好Python,首先要從內心認識到Python的強大與美,樹立起學好、用好Python的信念並堅持不懈的努力,然後纔有可能攀登Python高手之巔。

  很多人從內心很恐懼Python,曾經有不少人問我: “Python功能那麼強大,肯定很難學吧?”其實,從編程語言發展史來看,人類語言和機器語言之間的鴻溝越來越小,人機交互越來越方便,越高級的編程語言越接近人類自然語言,越容易學習、掌握和運用,所以請不要有絲毫的恐懼和猶豫,放手去學便是。

  以我個人20年的經驗,不管學習和使用哪種編程語言,大概都需要經曆4個階段: 第一階段,能看懂和調試彆人的代碼;第二階段,能在彆人的代碼基礎上進行適當改寫;第三階段,能把多段已有的代碼拼湊起來實現自己需要的功能;第四階段,自己動手編寫代碼實現特定功能需求。一般而言,如果每天堅持3個小時學習Python,兩周左右應該就能入門,3個月後就可以展示齣不錯的成果。當然,隨著學習和開發時間越來越長,功力會越來越深厚,能夠掌控的代碼行數(LOC)會越來越多,能夠控製的業務邏輯越來越復雜。

  毫無疑問,Python是一門快樂、優雅的語言,上手非常容易,稍加接觸就會喜歡上Python並能夠在短時間內寫齣幾個小程序。與C語言係列和Java等語言相比,Python大幅度降低瞭學習與使用的難度。Python易學易用,語法簡潔清晰,代碼可讀性強,編程模式非常符閤人類思維方式和習慣。盡管如此,但這並不代錶可以毫不費力地學會和熟練運用Python,在學習Python的路上沒有秘籍,也沒有哈利波特魔法杖,唯一的捷徑就是勤學苦練。

  多看。讀書破萬捲,下筆如有神。學習Python也是這樣,不僅要多看書,還要看很多遍。很多知識點是互相關聯的,單獨一個知識點也無法實現稍微復雜一點的功能,書中很多案例代碼用到瞭後麵章節的知識點,而後麵章節的案例代碼又用到瞭前麵章節的內容,這實在是無法避免的一件事。因此,不能奢望看一遍就能熟悉和掌握書中的內容,更不能奢望隻看一本書就能學會Python的全部知識。以我個人而言,除瞭Python官方幫助文檔和一些社區的資料之外,已經閱讀瞭超過25本Python方麵的書,並且還在不斷地購買和閱讀彆人編寫的Python書籍來提高自己對Python的理解。一書一茶一下午,這樣平淡的快樂或許有人難以體會,於我卻是樂此不疲。

  多練。太極拳論曰“由招熟而漸悟懂勁,由懂勁而階及神明,然非用力之久,不能豁然貫通焉”。陸遊的教子詩《鼕夜讀書示子聿》也認為“紙上得來終覺淺,絕知此事要躬行”。掌握瞭正確的方法以後,多練是唯一的捷徑。一定要動手編寫和調試書上的代碼,踏踏實實把基礎掌握好再有針對性地學習自己需要的擴展庫,切忌隻看不練。很多人眼高手低,一看就會,一編就錯,根本原因就是練得太少瞭。子曰“學而時習之”,也是這個道理,充分說明練習的重要性。一層功夫一層天。欲窮韆裏目,更上一層樓。多練,可以說是攀登Python高手之巔最重要的途徑。

  多想。學而不思則罔,思而不學則殆。一味地看書和埋頭苦練是不行的,還要多想、多總結、多整理,爭取把學到的知識和技術徹底理解。理解得越多,需要記憶的就越少。

  多交流。獨學而無友,則孤陋而寡聞。除瞭重視基礎知識的學習和練習之外,還要多交流。除瞭Python官方網站和在綫幫助文檔之外,經常瀏覽一些Python論壇並閱讀和調試其中的優秀代碼,汲取他人代碼中的精華。子曰“三人行必有我師焉,擇其善者而從之”,也是相同的道理。遇到不懂的問題也可以去一些論壇發帖提問,或者請教身邊的朋友和老師,但是提問之前一定要充分思考,有針對性地請教彆人,經過充分思考以後再請教彆人不僅是對彆人的尊重,也能讓自己有更大的收獲。百思不得其解的問題經過高手一點撥纔能有茅塞頓開和恍然大悟的效果,這樣的交流更加有效,不浪費彼此的時間。曾經有學生拿一個十幾頁代碼的程序來問我問題,我問哪裏看不懂,他說整個程序都看不懂,想讓我幫忙看看然後把整篇代碼給他講講。正如大傢所想的一樣,我直接拒絕瞭他。也曾經有讀者問我“怎麼用Python做圖像處理?”真的很抱歉,這樣沒營養的問題我實在沒法迴答。

  俗話說,心急吃不瞭熱豆腐。控製好學習的進度和節奏纔能獲得最好的效果,每天學習一點、進步一點、提高一點,時間久瞭會突然有一天發現自己已經成為Python高手,很有零存整取的感覺。欲速則不達,把下麵這個圖送給各位讀者朋友共勉。

  學拳容易改拳難。不是所有慢悠悠的拳都是太極拳,也不是所有用Python語言寫齣來的代碼都足夠Pythonic。很多人認為編程語言都是一通百通,無非是語法不一樣而已,認為“沒吃過豬肉也見過豬跑”,簡單看看語法就能立刻使用另外一種語言編寫程序。這樣的想法確實有一定的道理,但實際上就算天天看豬跑也沒法知道豬肉是啥味道,按照C語言的思路用Python寫齣來的代碼絕對不是好的Python程序,會顯得不倫不類,代碼會非常囉唆,不得Python精髓,完全不能發揮Python的優勢。應該在熟悉Python編程模式的基礎上,盡量嘗試從最自然、最簡潔的角度齣發去思考和解決問題,這樣纔能寫齣更加優雅、更加Pythonic的代碼,像詩一樣美。

  汝果欲學詩,功夫在詩外。沒有豐富的人生閱曆很難寫齣優美並且有內涵、有靈魂的詩,學習Python也是這樣。歸根到底,Python是用來錶達我們思想、算法或幫我們解決某個問題的語言和工具而已,idea纔是一個程序的靈魂。切不可把全部精力放到Python語言本身的學習上,而是要把主要精力放到自己的專業知識學習上,最終再用Python把自己的思想或算法準確地錶達齣來。本書從不同領域選取瞭一些有代錶性的案例,同時還結閤自己多年的項目開發和教學經驗整理和設計瞭一些案例,希望能夠起到拋磚引玉的作用。

  內容組織與閱讀建議

  對於Python程序員來說,熟練運用優秀、成熟的擴展庫可以快速實現業務邏輯和創意,而Python語言基礎知識和基本數據結構的熟練掌握則是理解和運用其他擴展庫的必要條件。並且,在實際開發中建議優先使用Python內置對象和標準庫對象實現預定功能,這樣可以獲得更高的執行效率。本書前7章使用大量篇幅介紹Python編程基礎知識,通過大量案例演示Python語言的精妙與強大。然後從第8章開始介紹大量標準庫和擴展庫在GUI編程、網絡編程、數據庫編程、大數據處理、多綫程與多進程編程、係統運維、圖形圖像編程、科學計算可視化、密碼學編程、移動終端編程等多個領域的應用。最後一章通過一個完整的係統演示瞭Python在實際係統開發中的應用。全書共16章,讀者在熟練掌握前7章之後,可以結閤自己的專業領域或興趣愛好,在其他章節中有選擇地進行閱讀。

  第1章Python基礎。介紹如何選擇Python版本和開發環境,Python對象模型,數字、字符串等基本數據類型,運算符與錶達式,常用內置函數,基本輸入輸齣函數,擴展庫管理與使用。

  第2章Python序列。講解序列常用方法和基本操作,列錶基本操作與常用方法,切片操作,列錶推導式,元組與生成器推導式,序列解包,字典、集閤基本操作與常用方法,字典推導式與集閤推導式。

  第3章程序控製結構與函數設計。講解Python選擇結構、for循環與while循環,帶else子句的循環結構,break與continue語句,循環代碼優化,函數定義與使用,關鍵參數、默認值參數、長度可變參數等不同參數類型,全局變量與局部變量,參數傳遞時的序列解包,return語句,lambda錶達式以及map()、reduce()、filter()、生成器與可調用對象。

  第4章麵嚮對象程序設計。講解類的定義與使用,self與cls參數,類成員與實例成員,私有成員與公有成員,繼承與派生,屬性,特殊方法與運算符重載等內容,以及自定義類實現數組、矩陣、隊列、棧、二叉樹、有嚮圖、集閤等數據結構。

  第5章字符串與正則錶達式。講解字符串編碼格式,字符串格式化、替換、分割、連接、查找、排版等基本操作,正則錶達式語法、正則錶達式對象、子模式與子模式擴展語法、match對象,以及Python正則錶達式模塊re的應用。

  第6章文件與文件夾操作。講解文件操作基本知識,Python文件對象,文本文件讀寫操作,二進製文件讀寫與對象序列化,文件復製、移動、重命名,文件類型檢測,文件完整性檢查,壓縮與解壓縮,文件夾大小統計,文件夾增量備份,刪除指定類型的文件,以及word、excel、zip、apk、rar等常見文件類型的操作。

  第7章異常處理結構、代碼測試與調試。講解Python異常類層次結構與自定義異常類,多種不同形式的異常處理結構,使用IDLE和pdb模塊調試Python程序,Python單元測試相關知識。

  第8章數據庫應用開發。介紹SQLite數據庫及其相關概念,Connection對象、Cursor對象、Row對象,使用Python操作Access、MS SQL Server、MySQL等關係型數據庫以及使用Python操作NoSQL數據庫MongoDB。

  第9章網絡應用開發。講解計算機網絡基礎知識,TCP、UDP協議編程,網絡嗅探器與端口掃描器設計,域名解析與網頁爬蟲設計原理,代理服務器與FTP軟件原理與實現,使用Python編寫CGI程序,使用Flask和django框架開發Web應用,以及使用C#與Python混閤開發Web應用。

  第10章多綫程與多進程。講解Python標準庫threading和multiprocessing在多綫程編程與多進程編程中的應用,以及多綫程與多進程之間的數據共享與同步控製。

  第11章大數據處理。介紹大數據處理框架MapReduce、Hadoop和Spark基本概念,重點介紹MapReduce和Spark應用。

  第12章圖形編程與圖像處理。講解擴展庫PyOpenGL在計算機圖形學編程中的應用,擴展庫pillow在圖像編程中的應用。

  第13章數據分析與科學計算可視化。講解擴展庫numpy、scipy、matplotlib在科學計算與可視化領域的應用,以及標準庫statistics與擴展庫pandas在統計與分析、數據處理中的應用。

  第14章密碼學編程。介紹愷撒密碼、維吉尼亞密碼等經典密碼算法的Python實現,以pycrypto、rsa、hashlib等模塊為主講解安全哈希算法、對稱密鑰密碼算法DES與AES以及非對稱密鑰密碼算法RSA與DSA的應用。

  第15章tkinter編程精彩案例。講解如何使用Python標準庫tkinter進行GUI編程,通過大量實際案例演示基本組件的用法,包括用戶登錄界麵設計、選擇類組件應用、簡單文本編輯器、畫圖程序設計與實現、電子時鍾、簡單動畫、屏幕任意區域截圖、音樂播放器、遠程桌麵監控程序等。

  第16章課堂教學管理係統設計與實現。通過一個綜閤案例來演示前麵章節知識的應用,提供瞭學生名單和題庫的導入、在綫點名、在綫提問、在綫答疑、在綫收作業、在綫自測與考試、數據導齣、防作弊與服務器自動發現、信息匯總、試捲生成等功能。

  本書的最大特點是信息量大、知識點緊湊、案例豐富、注釋量大、實用性強,把書中一些代碼進行簡單拼湊就可以滿足實際工作中需要的很多功能。全書近200個涉及不同行業領域的實用案例和上韆個代碼片段並且配有大量注釋以方便理解,沒有插入多餘的程序輸齣結果或軟件安裝截圖,隻保留瞭必要的代碼運行結果或截圖以供讀者參考和對比,充分利用寶貴的篇幅來介紹和演示盡可能多的知識,絕對物超所值。本書作者具有16年程序設計教學經驗,先後講授過匯編語言、C/C++/C#、Java、PHP、Python等多門程序設計語言,並且編寫過大量的應用程序,其中有幾套係統已投入使用多年並一直在使用。本書內容結閤瞭作者多年教學與開發過程中積纍的許多經驗和案例,並巧妙地糅閤進瞭相應的章節。

  本書對Python內部工作原理進行瞭一定深度的剖析,書中99%以上的案例均使用Python 3.5.1實現,這些代碼同樣也適用於Python 3.4.x(除少數幾個新特性之外,如矩陣運算符@)和最新版本Python 3.5.2以及馬上就要正式麵世的Python 3.6.0,極個彆案例使用Python 2.7.11實現(同樣適用於其他版本Python 2.7.x,包括最新的Python 2.7.12),並適當介紹瞭Python代碼優化、係統編程和安全編程的有關知識,可以滿足不同層次讀者的需要。另外,書中通過小提示、小技巧、注意、拓展知識等形式介紹瞭更多的內容,所以全部內容遠比章節目錄所顯示的要多,需要認真閱讀纔能真正領會其中的奧妙。

  配套資源

  本書提供所有案例源代碼,可以登錄清華大學齣版社網站(www.tup.com.cn)下載,或加入本書讀者群(QQ群號為282819961)下載最新配套資源並與作者直接交流,作者微信號Python_dfg也隨時期待您的反饋和交流,當然也歡迎關注微信公眾號“Python小屋”及時閱讀作者寫的最新案例代碼。

  本書適用讀者

  本書可以作為(但不限於):

  �r 本科、專科或研究生程序設計課程教材。

  �r Python培訓用書。

  �r 具有一定Python基礎的讀者進階首選學習資料。

  �r 涉及Python開發的工程師、策劃人員、科研人員和管理人員閱讀書目。

  �r 打算利用業餘時間學習一門快樂的程序設計語言並編寫幾個小程序來娛樂的讀者首選學習資料。

  �r 少數對編程具有濃厚興趣和天賦的中學生課外閱讀資料。

  感謝

  首先感謝父母的養育之恩,在當年那麼艱苦的條件下還堅決支持我讀書,沒有讓我像其他同齡的孩子一樣輟學。感謝姐姐、姐夫多年來對我的愛護以及在老傢對父母的照顧,感謝善良的弟弟、弟媳在老傢對父母的照顧,正是有瞭你們,遠離傢鄉的我纔能安心工作。當然,最應該感謝的是妻子和孩子對我這個技術狂人的理解,這些年來她們已經習慣瞭正在吃飯的我突然想起個思路然後就跑到計算機前麵去寫代碼瞭,習慣瞭我每個周末和假期都在教研室看書或寫代碼而不陪她們,也習慣瞭周末的中午和晚上做好飯以後再打電話讓我迴傢。為瞭錶示對我的支持,她們還閱讀瞭本書定稿前的版本並發現瞭幾個錯彆字。

  感謝每一位讀者,感謝您在茫茫書海中選擇瞭本書,衷心祝願您能夠從本書中受益,學到真正需要的知識!同時也期待每一位讀者的熱心反饋,隨時歡迎您指齣書中的不足!

  本書的齣版獲2014年山東省普通高校應用型人纔培養專業發展支持計劃項目資助。我校專業共建閤作夥伴——浪潮優派科技教育有限公司總裁邵長臣先生審閱瞭全書,並提齣很多寶貴的意見,在此緻以誠摯的謝意。本書在編寫齣版過程中也得到清華大學齣版社的大力支持和幫助,在此錶示衷心的感謝。

  董付國於山東煙颱

  2016年7月


用户评价

评分

感觉非常好,呵呵!赞哟!

评分

董老师的这本书需要多读多练,内容实例还是非常丰富的~

评分

东西挺好的,主要是物流比较快,满意!

评分

胶状质量很差,书脊破损,严重怀疑是否正版

评分

书没问题,就是运输时有点磨损但不严重。还有就是灰有点多&hellip;&hellip;

评分

很好,很准时,很实用

评分

不多说,好书,大学看过作者写的Python教材,也算入门了吧,这本拿来温故而知新。

评分

京东自营,服务态度好,专业用书,不错不错哦

评分

不错发货很快不错发货很快

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有