1. 程式人生 > >09-python基礎知識-常用模組

09-python基礎知識-常用模組

常用模組

time

  • sleep:睡眠

    print('開始計時')
    # 睡眠指定的秒數,可以是小數
    time.sleep(3)
    print('時間到')
    
  • time:獲取時間戳

    # 獲取時間戳(從1970-01-01 00:00:00到此刻的秒數)
    t = time.time()
    # print(t)
    
  • localtime:將時間戳轉換time.struct_time物件

    # 將一個時間戳轉換為日期時間物件(time.struct_time)
    # 當不傳時間戳時,預設轉換當前時間,包含時區
    local_time = time.localtime()
    # 可以通過屬性訪問成員
    print(local_time.tm_hour) # 也可以通過下標進行訪問 print(local_time[0])
  • gmtime:將時間戳轉換time.struct_time物件

    # 將時間戳轉換為日期時間物件(time.struct_time),不帶時區
    gt = time.gmtime()
    print(gt)
    
  • mktime:根據年月日等資訊建立時間戳

    # 根據年月日等資訊,建立一個時間戳
    t = time.mktime((2018, 11, 26, 11, 1, 50, 0, 330, 0))
    print(t)
    
  • timezone:

    # 0時區與當前系統時區相差的秒數
    print(time.timezone)
  • strftime:對time.struct_time物件進行格式化

    # 將一個時間轉換為特定格式顯示,預設轉換當前時間
    # print(time.asctime())
    '''
    格式化處理
    %Y:年(4位)
    %y:年(2位)
    %m:月
    %d:日
    %D:月/日/年
    %H:時
    %M:分
    %S:秒
    %w:星期
    %W:本週是今年的第幾周
    '''
    print(time.strftime('%D', local_time))
    print(time.strftime('%Y-%m-%d %H:%M:%S', local_time))
    

calendar

  • 示例:

    import calendar
    
    # 返回一年的日曆
    c = calendar.calendar(2018, w=3, l=2, c=2, m=2)
    # print(c)
    
    # 返回某一年的某一月的日曆
    m = calendar.month(2018, 11)
    # print(m)
    
    # 判斷閏年
    print(calendar.isleap(2008))
    
    # 兩個年份之間的閏年數量,區間:[起始,結束)
    print(calendar.leapdays(2000, 2008))
    print(calendar.leapdays(2000, 2009))
    

datetime

  • date

    from datetime import date
    import time
    
    # 建立物件
    d1 = date(2018, 11, 26)
    # print(d1, type(d1))
    
    d2 = date.today()
    # print(d2)
    
    d3 = date.fromtimestamp(time.time())
    # print(d3)
    
    # 標準格式顯示
    print(d1.isoformat())
    
    # 日曆顯示:(年,第幾周,星期)
    print(d2.isocalendar())
    
    # 獲取星期,標準格式1~7
    print(d3.isoweekday())
    
    # 獲取星期,格式0~6
    print(d3.weekday())
    
    # 格式化顯示
    print(d3.strftime('%Y/%m/%d'))
    
    # 提取單獨的年月日
    print(d3.year, d3.month, d3.day)
    
    # 轉換為time.struct_time物件
    print(d3.timetuple())
    
  • time

    from datetime import time
    
    # 建立物件
    t = time(1, 2, 3)
    print(t, type(t))
    print(str(t))
    
    # 單獨獲取時、分、秒
    print(t.hour, t.minute, t.second)
    
    # 格式化顯示
    print(t.strftime('%H::%M::%S'))
    
  • datetime

    from datetime import datetime
    import time
    
    # 建立物件
    dt = datetime(2018, 11, 26, 14, 53, 52)
    
    # 當前時間,帶時區
    dt2 = datetime.now()
    
    # 當前時間,不帶時區
    dt3 = datetime.utcnow()
    
    # 把時間戳轉換
    dt4 = datetime.fromtimestamp(time.time())
    # print(dt4)
    
    # 提取日期
    d = dt.date()
    print(d, type(d))
    
    # 提取時間
    t = dt.time()
    print(t, type(t))
    
    # 轉換成時間戳
    print(dt.timestamp())
    
    # 格式化顯示
    print(dt.strftime('%Y/%m/%d %H/%M/%S'))
    
  • timedelta

    from datetime import timedelta, datetime
    
    td = timedelta(seconds=3600)
    td2 = timedelta(days=2)
    
    dt1 = datetime(2018, 11, 26, 15, 6, 10)
    dt2 = datetime(2018, 11, 25, 14, 6, 10)
    
    td3 = dt1 - dt2
    
    # print(td3, type(td3))
    
    dt3 = dt1 + td2
    # print(dt3, type(dt3))
    
    # 提取天數
    print(td3.days)
    
    # 提取秒數(天以外的)
    print(td3.seconds)
    
    # 總共的秒數
    print(td3.total_seconds())
    

模組使用

  • 定義:模組就是一個工具包,裡面可以包含函式、類庫等,使用時匯入即可。

  • 分類:

    • 標準庫:os、sys、random等
    • 自定義:自己根據需要書寫的模組
    • 第三方:就是別人寫好的,可以直接使用,但是需要提前安裝。
  • 語法:

    # 匯入模組
    import time
    
    # 匯入模組中指定的內容
    from time import sleep
    
    # 帶入模組,並且起別名
    import random as rdm
    
    # 匯入模組中的指定內容,並且起別名
    from random import randint as rint
    
  • as

    • 使用as可以起別名,讓匯入的內容變得簡單易記
    • 使用as可以解決多個模組下識別符號衝突問題
  • 模糊匯入

    # 模糊匯入,匯入該模組中__all__列表指定的內容
    # 不建議使用:
    #   1.不知道匯入了什麼內容
    #   2.多個模組中有同名的內容無法處理
    from random import *
    
  • 自定義模組

    • 新建一個檔案(檔名不要與其他模組同名)
    • 新建的檔名(除了字尾)就是模組名
    • 匯入的方式與其他模組一樣
    • 模組名(檔名)就是名稱空間,同一模組下的識別符號不能同名,不同的模組下的識別符號可以同名
    • 多個模組有相同識別符號,可以直接匯入模組,也可以使用as起別名
  • 測試模組

    # 直接執行此模組,值為__main__
    # 被其他模組匯入,值為模組名
    # print('模組名:', __name__)
    
    # 模組測試內容可以這麼寫
    # 當直接執行此模組時會執行,當被其他模組匯入時不會執行
    
    if __name__ == '__main__':
    	print('模組測試內容')
    
  • 包的使用

    • 定義:具有__init__.py檔案的多個模組的資料夾
    • 說明:
      • __init__.py是一個檔案作為包的標誌,即使該檔案內容為空
      • 包檔案可以減少匯入的複雜度
  • 第三方模組安裝

    • 工具:pip
    • 使用:
    pip -h/--help			# 檢視幫助
    pip install 包名==版本		# 安裝指定的包(可以指定版本)
    pip install -r requirements.txt		# 讀取檔案內容,根據內容進行安裝
    pip uninstall 包名		# 解除安裝指定的包
    pip list				# 檢視已安裝的包
    pip show 包名				# 檢視指定的包
    pip freeze				# 檢視當前系統安裝的包及版本
    pip freeze > requirements.txt	# 將系統環境冷凍
    
    • 說明:
      • 安裝出錯的原因通常是沒有連網或安裝目錄沒有寫的許可權
      • 軟體安裝目錄:C:\Program Files\Python36\Lib\site-packages
      • 若安裝一直失敗,可以先從https://www.pypi.org下載下來然後再安裝,如:pip install xxx.whl
      • 也可以使用pycharm進行軟體包的安裝
      • 若覺得網速不好,可以改為國內的軟體源