Python 常用模組學習

來源:互聯網
上載者:User

標籤:python模組

一、什麼是模組

Python中的模組是可以將代碼量較大的程式分割成多個有組織的、彼此獨立但又能互相互動的程式碼片段,這些自我包含的有組織的程式碼片段就是模組。Python允許“匯入”其他模組以實現代碼重用,從而也實現了將獨立的代碼檔案組織成更大的程式系統。Python中,模組也是對象。在一個模組的頂層定義的所有變數都在被匯入時成為了被匯入模組的屬性。

二、模組的使用

1、python程式架構
一個Python程式通常包括一個頂層程式檔案和若干個模組檔案。頂層檔案包含了程式的主要控制流程程,模組檔案是為頂層檔案或其他模組提供各種功能性組件,模組首次匯入(或重載)時,Python會立即執行模組檔案的頂層程式碼(不在函數內的代碼),而位於函數主體內的代碼直到函數被調用後才會執行。
2、模組的執行環境
模組是被匯入的,但模組也可以匯入和使用其他模組,這些模組可以用Python或其它程式設計語言寫成
模組可內含變數、函數以及類來進行其工作,而函數和類可以包含變數和其它元素
3、匯入模組
在匯入模組時只能使用模組名,而不能使用帶.py尾碼的模組檔案名稱

import語句:            匯入指定的整個模組,包括產生一個以模組名命名的名稱空間            import module1[,module2[,...moduleN]]            建議一個import語句只匯入一個模組            import module as module_aliasfrom-import語句:            常用於只匯入指定模組的部分屬性至當前名稱空間            from module import name1[,name2[,...nameN]]          import和from-import是指派陳述式            import和from是可執行語句,類似於def,因此,它們可以嵌套在if測試中,出現於def中等等            Python執行到這些語句時才會對其進行解析,這意味著,所有來自模組的屬性僅在import語句執行後才能使用模組就是名稱空間            模組的名稱空間可以通過屬性__dict__或dir(M)擷取                模組屬性可通過點號(.)運算子擷取,格式為M.attr            模組是一個獨立的範圍(本地變數就是全域變數)

4、import的工作機制
import語句匯入指定的模組時會執行三個步驟
1、找到模組檔案
在指定的路徑下(sys.path)搜尋模組檔案
2、編譯成位元組碼
檔案匯入時就會編譯,因此,頂層檔案的.pyc位元組碼檔案在內部使用後會被丟棄,只有被匯入的檔案才會留下.pyc檔案
3、執行模組的代碼來建立其所定義的對象
模組檔案中的所有語句會依次執行,從頭到尾,而此步驟中任何對變數名的賦值運算,都會產生所得到的模組檔案的屬性
注意:模組只在第一次匯入時才會執行如上步驟,後續的匯入操作只不過是提取記憶體中已載入的模組對象,reload()可用於重新載入模組

三、time

time模組用來操作時間值
時間戳記:time.time()
格式化時間:字串表示,time.strftime(‘%Y-%m-%d‘)
結構化時間:元組表示,time.localtime(), time.gmtime()

asctime:返回時間格式Sun Mar 18 10:51:28 2018In [1]: import timeIn [2]: time.asctime()Out[2]: ‘Sun Mar 18 10:51:28 2018‘In [3]: time.asctime(time.localtime())Out[3]: ‘Sun Mar 18 10:51:45 2018‘ctime:將自紀元以來的時間以秒為單位轉換為本地時間的字串,相當於time.asctime(time.localtime())In [4]: time.ctime()Out[4]: ‘Sun Mar 18 10:55:26 2018‘gmtime:當前UTC時間In [7]: time.gmtime()Out[7]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=2, tm_min=58, tm_sec=1, tm_wday=6, tm_yday=77, tm_isdst=0)localtime:返回本地時間In [9]: time.localtime()Out[9]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=11, tm_min=3, tm_sec=56, tm_wday=6, tm_yday=77, tm_isdst=0)strptime:將傳入的時間轉換為str格式的時間In [11]: time.strptime(‘2018-3-18‘, ‘%Y-%m-%d‘)Out[11]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=77, tm_isdst=-1)strftime:將struct格式時間轉換為指定格式的時間In [13]: time.strftime(‘%Y-%m-%d‘)Out[13]: ‘2018-03-18‘In [14]: time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())Out[14]: ‘2018-03-18 03:09:47‘mktime:將struct時間轉換為時間戳記In [15]: time.mktime(time.strptime(‘2018-3-18‘, ‘%Y-%m-%d‘))Out[15]: 1521302400.0sleep:睡眠時間In [16]: time.sleep(5)

datetime模組用來操作時間
datetime.date:表示日期的類。常用的屬性有year, month, day
datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond
datetime.datetime:表示日期時間
datetime.timedelta:表示時間間隔,即兩個時間點之間的長度
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
strftime("%Y-%m-%d")

>>> import datetime                         >>> import time#目前時間>>> print(datetime.datetime.now())2018-03-18 12:10:27.199643#格式化時間戳記>>> print(datetime.date.fromtimestamp(time.time()))2018-03-18#目前時間?3天>>> print(datetime.datetime.now() + datetime.timedelta(3))2018-03-21 12:10:52.869598#目前時間?3天>>> print(datetime.datetime.now() + datetime.timedelta(-3))2018-03-15 12:11:04.721491#目前時間?3小時>>> print(datetime.datetime.now() + datetime.timedelta(hours=3))2018-03-18 15:11:18.628036#目前時間?4小時>>> print(datetime.datetime.now() + datetime.timedelta(hours=-4))2018-03-18 08:11:42.096182#目前時間?120分鐘>>> print(datetime.datetime.now() + datetime.timedelta(minutes=120))2018-03-18 14:11:53.305800
四、random

隨機數

In [1]: import randomIn [2]: random.random()Out[2]: 0.9381887159573181#隨機返回1到10之間的整數In [3]: random.randint(1,10)Out[3]: 8#從1到10中,2為步長隨機返回一個數In [4]: random.randrange(1,10,2)Out[4]: 5#隨機返回序列中的元素In [5]: random.choice([1,2,3,4])Out[5]: 3#打亂序列中的元素順序In [10]: l1 = [1,2,3,4]In [11]: random.shuffle(l1)In [12]: l1Out[12]: [1, 2, 4, 3]#隨機返回序列中的2個元素In [13]: random.sample(l1,2)Out[13]: [2, 4]

Python 常用模組學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.