『壹』 請問python主要應用領域是什麼,哪方面用的多了,適合做什麼
我用python就是寫網頁爬蟲;
速度應該還是不錯的;
但是他對中文的支持不咋地 尤其遇到一些編碼轉換的地方 初學時很容易在這里較勁;
你要是會java或.net然後去學它還是不難的,但比java強大好早著呢,別忘了java是誰捧起來的;
最後說下,python做web的框架太少了 服務支持也不怎樣,打擊了吧。不過是實話。
『貳』 Python核心編程的圖書目錄
第1部分Python核心
第1章歡迎來到Python世界
第2章快速入門
第3章Python基礎
第4章Python對象
第5章數字
第6章序列:字元串、列表和元組
第7章映像和集合類型
第8章條件和循環
第9章文件和輸入輸出
第10章錯誤和異常
第11章函數和函數式編程
第12章模塊
第13章面向對象編程
第14章執行環境
第2部分高級主題
第15章正則表達式
15.1引言/動機
15.2正則表達式使用的特殊符號和字元
15.2.1用管道符號(|)匹配多個正則表達式模式
15.2.2匹配任意一個單個的字元(.)
15.2.3從字元串的開頭或結尾或單詞邊界開始匹配(^/$ / /B )
15.2.4創建字元類([])
15.2.5指定范圍(-)和否定(^)
15.2.6使用閉包操作符(*,+,?,{})實現多次出現/重復匹配
15.2.7特殊字元表示、字元集
15.2.8用圓括弧(())組建組
15.3正則表達式和Python語言
15.3.1re模塊:核心函數和方法
15.3.2使用compile()編譯正則表達式
15.3.3匹配對象和group()、groups()方法
15.3.4用match()匹配字元串
15.3.5search()在一個字元串中查找一個模式(搜索與匹配的比較)
15.3.6匹配多個字元串(|)
15.3.7匹配任意單個字元(.)
15.3.8創建字元集合([])
15.3.9重復、特殊字元和子組
15.3.10從字元串的開頭或結尾匹配及在單詞邊界上的匹配
15.3.11用findall()找到每個出現的匹配部分
15.3.12用sub()(和subn())進行搜索和替換
15.3.13用split()分割(分隔模式)
15.4正則表達式示例
15.4.1匹配一個字元串
15.4.2搜索與匹配的比較,「貪婪」匹配
15.5練習
第16章網路編程
16.1引言
16.1.1什麼是客戶端/伺服器架構
16.1.2客戶端/伺服器網路編程
16.2套接字:通信端點
16.2.1什麼是套接字
16.2.2套接字地址:主機與埠
16.2.3面向連接與無連接
16.3Python中的網路編程
16.3.1socket()模塊函數
16.3.2套接字對象(內建)方法
16.3.3創建一個TCP伺服器
16.3.4創建TCP客戶端
16.3.5運行我們的客戶端與TCP伺服器
16.3.6創建一個UDP伺服器
16.3.7創建一個UDP客戶端
16.3.8執行UDP伺服器和客戶端
16.3.9Socket模塊屬性
16.4*SocketServer模塊
16.4.1創建一個SocketServerTCP伺服器
16.4.2創建SocketServerTCP客戶端
16.4.3執行TCP伺服器和客戶端
16.5Twisted框架介紹
16.5.1創建一個Twisted Reactor TCP伺服器
16.5.2創建一個Twisted Reactor TCP客戶端
16.5.3執行TCP伺服器和客戶端
16.6相關模塊
16.7練習
第17章網路客戶端編程
17.1什麼是網際網路客戶端
17.2文件傳輸
17.2.1文件傳輸網際協議
17.2.2文件傳輸協議(FTP)
17.2.3Python和FTP
17.2.4ftplib.FTP類方法
17.2.5互動式FTP示例
17.2.6客戶端FTP程序舉例
17.2.7FTP的其他方面
17.3網路新聞
17.3.1Usenet與新聞組
17.3.2網路新聞傳輸協議(NNTP)
17.3.3Python和NNTP
17.3.4nntplib.NNTP類方法
17.3.5互動式NNTP舉例
17.3.6客戶端程序NNTP舉例
17.3.7NNTP的其他方面
17.4電子郵件
17.4.1電子郵件系統組件和協議
17.4.2發送電子郵件
17.4.3Python和SMTP
17.4.4smtplib.SMTP類方法
17.4.5互動式SMTP示例
17.4.6SMTP的其他方面
17.4.7接收電子郵件
17.4.8POP和IMAP
17.4.9Python和POP3
17.4.10互動式POP3舉例
17.4.11poplib.POP3類方法
17.4.12客戶端程序SMTP和POP3舉例
17.5相關模塊
17.5.1電子郵件
17.5.2其他網路協議
17.6練習
第18章多線程編程
18.1引言/動機
18.2線程和進程
18.2.1什麼是進程
18.2.2什麼是線程
18.3Python、線程和全局解釋器鎖
18.3.1全局解釋器鎖(GIL)
18.3.2退出線程
18.3.3在Python中使用線程
18.3.4沒有線程支持的情況
18.3.5Python的threading模塊
18.4thread模塊
18.5threading模塊
18.5.1Thread類
18.5.2斐波那契、階乘和累加和
18.5.3threading模塊中的其他函數
18.5.4生產者-消費者問題和Queue模塊
18.6相關模塊
18.7練習
第19章圖形用戶界面編程
19.1簡介
19.1.1什麼是Tcl、Tk和Tkinter
19.1.2安裝和使用Tkinter533
19.1.3客戶端/伺服器架構534
19.2Tkinter與Python編程534
19.2.1Tkinter模塊:把Tk引入你的程序
19.2.2GUI程序開發簡介
19.2.3頂層窗口:
19.2.4Tk組件
19.3Tkinter舉例
19.3.1標簽組件
19.3.2按鈕組件
19.3.3標簽和按鈕組件
19.3.4標簽、按鈕和進度條組件
19.3.5偏函數應用舉例
19.3.6中級Tkinter範例
19.4其他GUI簡介
19.4.1Tk Interface eXtensions (Tix)
19.4.2Python MegaWidgets (PMW)
19.4.3wxWidgets和wxPython
19.4.4GTK+和PyGTK
19.5相關模塊和其他GUI
19.6練習
第20章Web編程
20.1介紹
20.1.1Web應用:客戶端/伺服器計算
20.1.2網際網路
20.2使用Python進行Web應用:創建一個簡單的Web客戶端
20.2.1統一資源定位符
20.2.2urlparse模塊
20.2.3urllib模塊
20.2.4urllib2模塊
20.3高級Web客戶端
20.4CGI:幫助Web伺服器處理客戶端數據
20.4.1CGI介紹
20.4.2CGI應用程序
20.4.3cgi模塊
20.5建立CGI應用程序
20.5.1建立Web伺服器
20.5.2建立表單頁
20.5.3生成結果頁
20.5.4生成表單和結果頁面
20.5.5全面交互的Web站點
20.6在CGI中使用Unicode編碼
20.7高級CGI
20.7.1Mulitipart表單提交和文件的上傳
20.7.2多值欄位
20.7.3cookie
20.7.4使用高級CGI
20.8Web(HTTP)伺服器
20.9相關模塊
20.10練習
第21章資料庫編程
21.1介紹
21.1.1持久存儲
21.1.2基本的資料庫操作和SQL語言
21.1.3資料庫和Python
21.2Python資料庫應用程序程序員介面(DB-API)
21.2.1模塊屬性
21.2.2連接對象
21.2.3游標對象
21.2.4類型對象和構造器
21.2.5關系資料庫
21.2.6資料庫和Python:介面程序
21.2.7使用資料庫介面程序舉例
21.3對象-關系管理器(ORM)
21.3.1考慮對象,而不是SQL
21.3.2Python和ORM
21.3.3雇員資料庫舉例
21.3.4總結
21.4相關模塊
21.5練習
第22章擴展Python623
22.1引言/動機
22.1.1什麼是擴展
22.1.2為什麼要擴展Python
22.2創建Python擴展
22.2.1創建您的應用程序代碼
22.2.2用樣板來包裝你的代碼
22.2.3編譯
22.2.4導入和測試
22.2.5引用計數
22.2.6線程和全局解釋器鎖(GIL)
22.3相關話題
22.4練習
第23章其他話題
23.1Web服務
23.2用Win32的COM來操作微軟Office
23.2.1客戶端COM編程
23.2.2 微軟Excel
23.2.3微軟Word第1部分Python核心
23.2.4微軟PowerPoint
23.2.5微軟Outlook
23.2.6中等規模的例子
23.3用Jython寫Python和Java的程序
23.3.1什麼是Jython
23.4練習
23.2.4微軟PowerPoint
23.2.5微軟Outlook
23.2.6中等規模的例子
23.3用Jython寫Python和Java的程序
23.3.1什麼是Jython
23.3.2Swing GUI開發(Java或者Python!)
23.4練習
『叄』 python socket編程中listen和accept的區別
listen函數在一般在調用bind之後-調用accept之前調用,它的函數原型是:
intlisten(int sockfd, int backlog)
參數sockfd
被listen函數作用的套接字,sockfd之前由socket函數返回。在被socket函數返回的套接字fd之時,它是一個主動連接的套接字,也就是此時系統假設用戶會對這個套接字調用connect函數,期待它主動與其它進程連接,然後在伺服器編程中,用戶希望這個套接字可以接受外來的連接請求,也就是被動等待用戶來連接。由於系統默認時認為一個套接字是主動連接的,所以需要通過某種方式來告訴系統,用戶進程通過系統調用listen來完成這件事。
參數backlog
這個參數涉及到一些網路的細節。進程處理一個一個連接請求的時候,可能還存在其它的連接請求。因為TCP連接是一個過程,所以可能存在一種半連接的狀態,有時由於同時嘗試連接的用戶過多,使得伺服器進程無法快速地完成連接請求。如果這個情況出現了,伺服器進程希望內核如何處理呢?內核會在自己的進程空間里維護一個隊列以跟蹤這些完成的連接但伺服器進程還沒有接手處理或正在進行的連接,這樣的一個隊列內核不可能讓其任意大,所以必須有一個大小的上限。這個backlog告訴內核使用這個數值作為上限。
毫無疑問,伺服器進程不能隨便指定一個數值,內核有一個許可的范圍。這個范圍是實現相關的。很難有某種統一,一般這個值會小30以內。
accept函數
摘要:accept()用來接受參數s的socket連接,它的函數原型是:
intaccept(int s,struct sockaddr * addr,int * addrlen)
服務程序調用accept函數從處於監聽狀態的流套接字s的客戶連接請求隊列中取出排在最前的一個客戶請求,並且創建一個新的套接字來與客戶套接字創建連接通道,如果連接成功,就返回新創建的套接字的描述符,以後與客戶套接字交換數據的是新創建的套接字;如果失敗就返回 INVALID_SOCKET。該函數的第一個參數指定處於監聽狀態的流套接字;操作系統利用第二個參數來返回新創建的套接字的地址結構;操作系統利用第三個參數來返回新創建的套接字的地址結構的長度。
『肆』 IT技術在工業界的應用前景怎樣PYTHON在工業界的應用前景如何
年輕的Python誕生了,闖入了編程語言這個大家庭。有了新面孔,面對大哥應該怎麼走?前景及其應用在我看來,一切都充滿了未知,但也代表著無限的可能!讓我們來看看這些著名的前景及其應用。
網路編程提供了豐富的模塊來支持套接字編程,可以方便快捷地開發分布式應用。
作為Web應用的開發語言,它支持最新的XML技術。
Python的PyOpenGL模塊作為多媒體應用,封裝了「OpenGL應用編程介面」,可以處理二維和三維圖像。PyGame模塊可以用來寫游戲軟體。程序員看完有沒有學習的沖動?
『伍』 如何利用Python標准庫編程
第一步、根據自己的業務需求聲明一個繼承自Python標准庫的模塊
# 接收流量類,繼承自asyncore.dispatcher,class Receiver(asyncore.dispatcher):
def __init__(self,conn):
asyncore.dispatcher.__init__(self,conn)
self.from_remote_buffer='' # 接收數據的緩沖區
self.to_remote_buffer='' # 發送數據的緩存區
self.sender=None1234567
第二步、根據文檔,重寫模塊中的方法,這些方法有些像生命周期中的事件,你可以通過在這些事件中自定義代碼,使得在特定時間點執行特定的代碼。
# 接收流量類,繼承自asyncore.dispatcher,class Receiver(asyncore.dispatcher):
def __init__(self,conn):
asyncore.dispatcher.__init__(self,conn)
self.from_remote_buffer='' # 接收數據的緩沖區
self.to_remote_buffer='' # 發送數據的緩存區
self.sender=None
# 當活動opener的套接字真正創建連接時被調用。也許發送一個「歡迎」字元串數據,或者比如,初始化一個遠程端點的協商協議。
def handle_connect(self):
pass
# 當非同步循環檢測到一個在信道套接字上的read()調用時會成功被調用。
def handle_read(self):
read = self.recv(BUFSIZE)
self.from_remote_buffer += read # 每次在非同步循環中被調用來決定是否一個信道的套接字應該被加到寫事件可以發生的列表中。 默認方法簡單地返回 True,顯然,所有的信道會關注於寫事件。
def writable(self):
return (len(self.to_remote_buffer) > 0) # 當非同步循環檢測到一個可寫入的的套接字可以被寫入時被調用。常用這個方法為了性能優化實現必要的緩存。
def handle_write(self):
sent = self.send(self.to_remote_buffer)
self.to_remote_buffer = self.to_remote_buffer[sent:] # 當套接字被關閉的時候調用
def handle_close(self):
self.close() if self.sender:
self.sender.close()
『陸』 python課程內容都有哪些呢
賀聖軍Python輕松入門到項目實戰(經典完整版)(超清視頻)網路網盤
鏈接: https://pan..com/s/1C9k1o65FuQKNe68L3xEx3w
若資源有問題歡迎追問~
『柒』 python 如何聯機傳遞信息
網路交互就涉及到網路編程啦,python有套接字socket模塊,可以實現網路交互,這玩意需要樓主去學習啦!
『捌』 風變編程的Python課程學完效果如何
一、Python簡介
Python是一種用來編寫應用程序的高級程序設計語言,TIOBE程序語言排行榜2015年12月的排名如下:
Python實現強勢逆襲,而且我相信,隨著時間的推移,國內Python語言未來前景也是一片向好。
Python的特點是優雅簡單,易學易用(雖然我感覺還是有一些概念不容易理解),Python的哲學是盡量用最少的,最簡單易懂的代碼實現需要的功能。Python適宜於開發網路應用,腳本寫作,日常簡單小工具等等。Python的缺點是效率較低,但是在大量的場合效率卻不是那麼重要或者說Python不是其性能瓶頸,所以不要太在意。其次是2.x-3.x的過渡使得許多3.x還缺少很多2.x下的模塊,不過也在完善中。其次就是源代碼無法加密,發布Python程序其實就是發布源代碼。
二、基礎語法要點
1.如果一個字元串中有許多需要轉義的字元,而又不想寫那麼多'',那麼可以用 r'...' 表示 '...'內的內容不轉義。
2.Python可用'''...'''來表示多行內容,如:
123456>>>print('''line1line2line3''')line1line2line3
3.Python的邏輯運算and, or, not 分別對應C語言中的&&, ||, !.
4.Python的整數與浮點數大小都沒有范圍。
5.Python中除法有兩種: '/'除出來必是浮點數, '//'除出來是整數,即地板除。
6.Python中一切皆引用。每個對象都有一個引用計數器(內部跟蹤變數)進行跟蹤,引用計數值表示該對象有多少個引用,當初次產生賦給變數時,引用計數為1,其後沒進行下列行為中的任意一種都會增加引用計數:
123賦值: a=b用作函數參數傳遞: func(a)成為容器對象的一個元素: lis=[1,2,a]
以下任意一種行為都會減少引用計數:
1234del銷毀:dela變數另賦給其他對象:a=False對象從容器中刪除: lis.remove(a)身在的容器被銷毀:dellis
7.深拷貝與淺拷貝的概念與對比,有點復雜,看這篇文章
8.list,tuple和dict,set
list:為列表,是一個有序集合,類似於數組但又比數組功能強大,可以隨時append,pop元素,下標從0開始,且下標為加n模n制,即lis[-1] = lis[len-1],下標范圍[-len,len-1].
tuple:為元組,類似於list,但list為可變類型,而tuple不可變,即沒有append,pop等函數。一個建議是為了安全起見,能用tuple代替list盡量用tuple。如果tuple只有一個元素,要寫成如(1,)以避免歧義。
dict:字典類型,存放key-value鍵值對,可以根據key迅速地找出value,當然,key必須是不可變類型,如下是錯誤的:
12345>>> dic={[1,2]:'value'}Traceback (most recent call last):File"<pyshell#10>", line1,in<mole>dic={[1,2]:'value'}TypeError: unhashabletype:'list'
list與dict的優劣對比:
1234567dict:1.插入,查找速度快,跟key的數目無關2.需佔用大量內存,內存浪費嚴重list:1.插入,查找速度慢,O(n)的復雜度,隨元素個數增加而增加2.佔用內存小
dict內部存放的順序和key放入的順序是沒有關系的
set:set與dict類似,相當於只有key沒有value的dict,每個key不同,set間有 &, | 等操作對應集合的交,並操作。
三、函數
1.函數是對象,函數名即是指向對應函數對象的引用,所以可以將函數名賦給一個變數,相當於給函數起一個『別名』。
123>>> mmm=max>>> mmm(1,2,3)3
2.Python函數可以返回」多個值「,之所以打引號,是因為實際上返回的多個值拼成了一個元組,返回這個元組。
3.定義默認參數需要牢記:默認參數必須指向不變對象。否則第一次調用和第二次調用結果會不一樣,因為可變的默認參數調用後改變了。
4.可變參數:傳入的參數個數是可變的,可以是0個或多個。可變參數會將你傳入的參數自動組裝為一個tuple。在你傳入的list或tuple名字前加一個 * 即說明傳入的是可變參數。習慣寫法為*args。
5.關鍵字參數:傳入0個或多個含參數名的參數,這些參數被自動組裝成一個dict。習慣寫法**kw,如**a表示把a中所有的鍵值對以關鍵字參數的形式傳入kw,獲得一個dict,這個dict是a的一份拷貝,對kw改動不會傳遞到a
6.命名關鍵字在函數定義中跟在一個*分割符後,如
12deffunc(a,b,*,c,d):pass
c,d為命名關鍵字參數,可以限制調用者可以傳入的參數名,同時可以提供默認值。
7.參數定義順序:必選參數,默認參數,可變參數/命名關鍵字參數,關鍵字參數。
8.切片操作格式為lis[首下標:尾下標:間隔],如果都不填,即lis[::]則代表整個容器lis
9.用圓括弧()括起來一個列表生成式創建一個生成器generator,generator保存生成演算法,我們可以用next(g)取得生成器g的下一個返回值。生成器的好處就是我們不需要提前生成所有列表元素,而是需要時再生成,這在某些情況下可以節省許多內存。演算法也可以不是列表生成式而是自定義函數,只需在函數定義中包含yield關鍵字。
10.map()和rece(): 二者都是高階函數。map()接收兩個參數,一個是函數,一個是Iterable序列,map將傳入的函數依次作用在序列每一個元素上,並把結果作為新的Iterator返回。rece()類似累積計算版的map(),把一個函數作用在一個序列上,每次接收兩個參數,將結果繼續與序列的下一個元素做累積計算。
利用map和rece編寫一個str2float函數,如把字元串'123.456'轉換成浮點數123.456:
123456789101112131415(s):deff1(x,y):returnx*10+ydefchar2num(s):return{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]deff2(x,y):returnx*0.1+ya,b=s.split('.')print('a=',a)print('b=',b)returnrece(f1,map(char2num,a))+0.1*rece(f2,map(char2num,b[::-1]))print('str2float('123.456') =', str2float('123.456'))
11.fliter()函數過濾序列,類似於map()作用於每一元素,根據返回值是True或者False決定舍棄還是保留該元素。函數返回一個Iterator。
12.sorted()函數可實現排序,類似於C++庫中的sort()函數,但是比其更加簡潔,語法為sorted(lis,key=func,reverse=T/F)
key函數可實現自定義的排序規則,reverse表示升序還是降序。
13.一個函數可以返回一個函數,但是返回時該函數並未執行,所以返回函數中不要引用任何可能發生變化的變數,否則會出現邏輯錯誤。
14.裝飾器(decorator): 當需要增強函數的功能卻不希望修改函數本身,那麼可以採用裝飾器這種運行時動態增加功能的方式,增加的功能卸載裝飾器函數中。如在執行前後列印'begin call'和'end call',可以這樣做:
12345678910111213141516importfunctoolsdeflog(func):@functools.wraps(func)#為了校正函數簽名,最好寫上defwrapper(*args,**kw):print('begin call')f=func(*args,**kw)print('end call')returnfreturnwrapper@logdefhah():print('hahahaha')hah()
123
begin callhahahahaend call
15.偏函數: functools.partial(),作用是將一個函數的某些參數固定住,作為新函數的參數,即固定住該參數,返回一個新函數,使調用更簡單。
四、面向對象編程
1.Python實例變數可以自由地綁定任何屬性
2.為了不讓內部屬性不被外部訪問,在屬性的名稱前加上兩個下劃線__,這樣就變成了一個私有變數(private),注意,不能直接訪問不代表一定不能訪問,事實上,加雙下劃線後Python就會將其改名為『_class名__name』,所以還是可以這樣來訪問這個『私有』變數。
3.對於靜態語言,如果要求傳入一個class類型的對象,那麼傳入的對象必須是class類型或者其子類,否則將無法調用class中的方法,而Python這樣的動態語言有『鴨子類型』一說,即不一定要傳入class類型或其子類,而只要保證傳入的對象中有要使用的方法即可。
4.如果想要限制實例可以綁定的屬性,那麼在定義class時定義一個__slots__變數即可,例如:
12classStudent(object):__slots__=(『name』,』age』)
注意,__slots__限制的屬性對當前類實例起完全限製作用,且與子類共同定義其__slots__,也就是說子類可以定義自己的__slots__,子類實例允許定義的屬性就是自身的__slots__加上父類的__slots__,即並集。
5.@ property裝飾器可以使一個getter方法變成屬性,如果方法名為me,那麼@me.setter裝飾器則可使一個setter方法變成屬性。這樣可以使代碼更簡短,同時可對參數進行必要的檢查。
6.通過多重繼承,可使子類擁有多個父類的所有功能。
7.在類中__call__方法可使實例對象像函數那樣直接調用,作用即是該方法定義的過程。
8.ORM(Object Relational Mapping 對象關系映射),就是把關系資料庫的一行映射為一個對象,也就是一個類對應一個表。ORM的實現需要通過metaclass元類修改類的定義。元類可以改變類創建時的行為。
五、調試
1.Python調試方法:
(1)直接列印
(2)斷言
(3)pdb
(4)IDE
六、IO編程
1.序列化: 把變數從內存中變成可存儲或傳輸的過程稱之為序列化。Python用pickle模塊實現序列化。序列化之後,就可以把序列化後的內容存儲到磁碟上或者通過網路進行傳輸。pickle.mps()將對象序列化成一個bytes,而pickle.loads()可以根據bytes反序列化出對象。
2.pickle雖好,但是它專為Python而生,所以要在不同語言間傳遞對象,最好還是xml或者json,而json表示格式是一個字元串,更易讀取,且比xml快,所以更加適宜於對象序列化。Python內置了json模塊,相應方法仍然是mps()和loads()。
3.但是在默認情況下,有些對象是無法序列化的,所以我們有時還需要定製轉換方法,告訴json該如何將某類對象轉換成可序列為json格式的{}對象。如下即是一個轉換方法:
123456defmantodict(std):return{'name': std.name,'age': std.age,'id': std.id}
七、進程與線程
1.Python用mutiprocessing模塊來實現多進程。
2.如果要大量創建子進程,可以使用進程池:
1frommultiprocessingimportPool
示例如下:
12345678....p=Pool(4)foriinrange(5):p.apply_async(long_time_task, args=(i,))print('Waiting for all subprocesses done...')p.close()p.join()print('All subprocesses done.')
要使用進程池需新建Pool對象,對Pool對象調用join()使等待池中所有子進程運行完畢,調用join()方法之前必須調用close(),且此後無法再新加子進程。
3.使用subprocess模塊可以方便的啟動並管理一個子進程,控制其輸入輸出。
4.進程間通信使用Queue,Pipes實現。
5.threading模塊管理線程。threading.lock()創建線程鎖,防止同時訪問互斥資源造成的錯誤,示例如下:
1234567lock=threading.Lock()...lock.acquire()...change(mutex)...lock.release()
6.ThreadLocal可以解決參數在一個線程中各個函數之間互相傳遞的問題。
7.managers模塊實現分布式進程。
八、正則表達式與常用內建模塊
1.re模塊進行正則表達式編譯和匹配,如果該表達式需要匹配很多次,那麼最好進行編譯從而大大節省時間。
正則表達式匹配郵箱例子:
12345678910importrehah=re.compile('[0-9a-zA-Z]+[.[0-9a-zA-Z]+]*@[0-9a-zA-Z]+.[a-z]{2,3}')print(hah.match('[email protected]').group())print(hah.match('[email protected]').group())i=1whilei <10:r=input('請輸入郵箱:')print(hah.match(r).group())i=i+1
2.datetime模塊進行日期和時間的處理,每一個時間對應一個timestamp,我們把1970年1月1日 00:00:00 UTC+00:00時區的時刻稱為epoch time,記為0(1970年以前的時間timestamp為負數),當前時間就是相對於epoch time的秒數,稱為timestamp。字元串和datetime也可以相互轉換,採用strptime()方法,字元串轉換為datetime時需要設定一個識別格式,其中
1%Y-%m-%d%H:%M:%S
分別表示年-月-日 時-分-秒。
從datetime得出月份,星期等字元串用strftime()方法,其中:
1%a,%b%d%H:%M
分別表示星期, 月份 日期 時:分。
示例:
12345678910fromdatetimeimportdatetimer='2015-11-23 12:01'dt=datetime.strptime(r,'%Y-%m-%d %H:%M')print(dt)week=dt.strftime('%a %b %d, %H:%M')print(week)2015-11-2312:01:00Mon Nov23,12:01
3.collections是Python內建的一個集合模塊,提供了許多有用的集合類。
4.Base64是一種任意二進制到文本字元串的編碼方法,常用於在URL、Cookie、網頁中傳輸少量二進制數據。
5.struct模塊用來解決bytes和其他二進制數據類型的轉換。
6.Python的hashlib提供了常見的哈希演算法,如MD5,SHA1等等。hashlib實現簡單登錄:
importhashlibdb={'michael':'','bob':'','alice':''}defget_md5(ostr):md5=hashlib.md5()md5.update(ostr.encode())returnmd5.hexdigest()deflogin(user, password):r=get_md5(password)fornameindb:ifdb[name]==r:returnTruereturnFalseprint(login('bob','abc999'))True
7.Python的內建模塊itertools提供了非常有用的用於操作迭代對象的函數。
8.urllib提供了一系列用於操作URL的功能。如GET,POST...
9.PIL(Python Imaging Library Python圖像庫)是一個強大的圖像處理標准庫,功能強大卻又簡單易用。現在的名字叫做Pillow。可以如下安裝Pillow:
1pip3 install pillow
從下面生成數字驗證碼的程序可以窺其一斑:
九、網路編程和電子郵件
1.網路編程主要是TCP和UDP的編程,示例見【Python網路編程】利用Python進行TCP、UDP套接字編程
2.SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件。Python內置一個poplib模塊,實現了POP3協議,可以直接用來收郵件。由於現在絕大多數大型郵件服務商都採取了反垃圾郵件措施,所以這部分的簡單實驗並沒有成功,還需進一步研究,等遇到具體情況再說。
3.Python內嵌了sqlite資料庫,還可以自行安裝連接mysql,MySQL是當前最流行的開源資料庫,在行業內有著廣泛的應用。
十、Web開發和非同步IO
1.WSGI(Web Server Gateway Interface) 伺服器網關介面。
2.Python web 開發框架:
-Flask:流行的Web框架
-Django:全能型Web框架
-web.py:一個小巧的Web框架
-Bottle:和Flask類似的Web框架
-Tornado:Facebook的開源非同步Web框架
3.協程
『玖』 如何用Python編程結合Abaqus進行有限元分析
import socket
s1=socket.socket(family,type)
#family參數代表地址家族,可為AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用於同一台機器上的進程間通信。
#type參數代表套接字類型,可為SOCK_STREAM(流套接字,就是TCP套接字)和SOCK_DGRAM(數據報套接字,就是UDP套接字)。
#默認為family=AF_INET type=SOCK_STREM
#返回一個整數描述符,用這個描述符來標識這個套接字!