模塊
一個完整大型的python程序是由模塊和包的形式組織起來的,可見模塊在python中的重要性。模塊是一種組織型式,它許多有關聯(關系)的代碼組織放到單獨的獨立文件中。簡單的說,可以把模塊理解為一個包含了許多強大功能(方法)的包。在python標准庫中就包含許多模塊,有很多模塊內的方法都會被經常使用到。
python模塊有什么用?
- 模塊內有許多函數方法,利用這些方法可以更簡單的完成許多工作。
- 模塊可以在文件中永久保存代碼。在python交互式解釋器中操作輸入的代碼,在退出python時是不會被保存的,而模塊文件中的代碼是永久存在的。
- 從實用性方面來說,模塊可以跨系統平台使用,只需要Copy代碼就可以。比如說,有一個全局對像,會被許多文件使用,這時為了方便把它寫入一個模塊中,再被調用是最好的方法。
import 語句語法
使用import
語句導入模塊,import
語句語法如下:
import module
關鍵字 模塊名
例如:
import sys #導入math模塊
sys.path #調用math模塊中的path屬性
如果要同時導入多個模塊,只需要在模塊名之前用逗號進行分隔:
import module1,module2,module3……
import 語句導入模塊順序
在編寫代碼過程中,我們可能需要多種多樣的模塊。需要注意的是最好把導入模塊放在代碼的開頭。為什么呢?
解釋器在執行語句是,遵循作用域原則。因為這個作用域有關系,如果在頂層導入模塊,此時它的作用域是全局的;如果在函數內部導入了模塊,那它的作用域只是局部的,不能被其他函數使用。如果其他函數也要用到這個模塊,還需要再次導入比較麻煩。
在用import
語句導入模塊時最好按照這樣的順序:
- python標准庫模塊
- python第三方模塊
- 自定義模塊
導入模塊的幾種方法
- import
import sys
sys.path
- from-import
相對第一種方法來說更加簡單,不用寫模塊名,只需要寫方法名
from subprocess import Popen, PIPE
a = Popen(['ls'],stdout=PIPE)
- 設置別名的方式
個人不推薦這種方法,因為后期會給維護代碼增加工作量
import subprocess.Popen as f
a = f(['ls'])
datetime
datetime
是python
處理日期和時間的標准庫
獲取當前日期和時間
>>> from datetime import datetime
>>> now = datetime.now() # 獲取當前datetime
>>> print(now)
2017-11-09 23:56:48.390000
>>> print(type(now))
<class 'datetime.datetime'>
datetime 加減
對日期和時間進行加減實際上就是把datetime
往后或往前計算,得到新的datetime
。加減可以用+
和-
運算符,不過需要導入timedalta
這個類
注意timedelta 中只支持 days、seconds、microseconds
>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> print now
2017-11-10 00:04:49.656000
>>> now += timedelta(hours=10)
>>> print now
2017-11-10 10:04:49.656000
>>> now += timedelta(hours=-10)
>>> print now
2017-11-10 00:04:49.656000
獲取指定日期和時間
要指定某個日期和時間,我們直接用參數構造一個datetime
>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期時間創建datetime
>>> print(dt)
2015-04-19 12:20:00
時間轉換
datetime 轉換為 timestamp
在計算機中,我們把1970年1月1日 00:00:00 UTC+00:00時區的時刻稱為epoch time,記為0(1970年以前的時間timestamp為負數),當前時間就是相對於epoch time的秒數,稱為timestamp。
你可以認為:
timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
對應的北京時間是:
timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00
可見timestamp
的值與時區毫無關系,因為timestamp一旦確定,其UTC時間就確定了,轉換到任意時區的時間也是完全確定的,這就是為什么計算機存儲的當前時間是以timestamp表示的,因為全球各地的計算機在任意時刻的timestamp都是完全相同的(假定時間已校准)。
把一個datetime類型轉換為timestamp只需要簡單調用timestamp()方法:
>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期時間創建datetime
>>> dt.timestamp() # 把datetime轉換為timestamp
1429417200.0
timestamp轉換為datetime
要把timestamp轉換為datetime,使用datetime提供的fromtimestamp()方法:
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00
timestamp也可以直接被轉換到UTC標准時區的時間:
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t)) # 本地時間
2015-04-19 12:20:00
>>> print(datetime.utcfromtimestamp(t)) # UTC時間
2015-04-19 04:20:00
str轉換為datetime
很多時候,用戶輸入的日期和時間是字符串,要處理日期和時間,首先必須把str轉換為datetime。轉換方法是通過datetime.strptime()實現,需要一個日期和時間的格式化字符串:
>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59
datetime轉換為str
如果已經有了datetime對象,要把它格式化為字符串顯示給用戶,就需要轉換為str,轉換方法是通過strftime()實現的,同樣需要一個日期和時間的格式化字符串:
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28