1. 程式人生 > >Python基礎筆記_Day09_Python模組、自定義模組、包、時間模組

Python基礎筆記_Day09_Python模組、自定義模組、包、時間模組

Day09_Python模組、自定義模組、包、時間模組

09.01_Python語言基礎(模組概述)(掌握)
09.02_Python語言基礎(匯入模組--import)(掌握)
09.03_Python語言基礎(模組重新命名import...as)(掌握)
09.04_Python語言基礎(定位模組--搜尋路徑)(瞭解)
09.05_Python語言基礎(標準函式庫中的模組)(熟練)
09.06_Python語言基礎(使用自定義模組)(重點)
09.07_Python語言基礎(呼叫自定義模組)(掌握)
09.08_Python語言基礎(包)(掌握)
09.09_Python語言基礎(安裝第三方模組)(掌握)
09.10_Python語言基礎(時間相關的模組)(熟練)

09.01_Python語言基礎(模組概述)(掌握)

  • 模組就好比一個工具包,要想使用這個工具包中的工具(函式),需要匯入這個模組

  • 優點:

    • 1.提高程式碼的可維護性
    • 2.提高程式碼的複用性,當一個模組定義完畢,可以被多個地方引用
    • 3.引用其他的模組(內建模組,第三方模組)

    注意:
    避免函式名和變數名的衝突

09.02_Python語言基礎(匯入模組–import)(掌握)

在python中用關鍵字import來引入模組,一般放在程式碼最前面

格式:
  import module1,module2....
  • 當直譯器遇到import 語句,如果模組在當前的搜尋路徑就會被匯入

模組呼叫函式的基本格式:
    模組名.函式名()

 思考:
為什麼必須加上模組名才能呼叫?

在多個模組中含有同名的函式,此時如果只是通過函式名來進行呼叫,直譯器就無法知道到底需要呼叫哪個函式
如果使用import匯入模組,在呼叫的時候必須加上模組名
import math
print(sqrt(2))#錯誤的
print(math.sqrt(2))

使用from…import,可以只匯入模組的一部分

  • 只需要用到模組中的某一個函式,此時只需要引入該函式即可,無需引入模組中的所有函式,浪費記憶體

格式:
   from 模組名 import 函式名1,函式名2.....

   案例:
from  math import sin,cos
# math.sin()#報錯
sin()
cos()
# sqrt()#報錯

思考:
   如果想要引入一個math模組中所有的函式
   # from math import *

使用from…import * 匯入模組所有的內容

from...import*:
把一個模組中所有的內容匯入到當前的名稱空間
格式:
   from  module import *

09.03_Python語言基礎(模組重新命名import…as)(掌握)

  • as 理解為重新命名,將原有的名稱替換成一個新的名字

  • 作用:
    有時候匯入的模組的名字很長或者很難記住簡潔

格式:
import modName as newName
   import math as aa(#aa表示math)
import math as aa
math#報錯
aa.sin()
aa.ceil()

注意:如果使用as將原有的模組名重新命名,原先的將不可用

09.04_Python語言基礎(定位模組–搜尋路徑)(瞭解)

  • 當你匯入一個模組,python的直譯器對模組位置的搜尋的順序:
    • 當前目錄
    • 如果不再當前的目錄,python則搜尋在shell變數的PYTHONPATH的每一個目錄
    • 模組的搜尋路徑儲存在system模組的sys.path模組中變數,變數中包含當前的目錄,
      python path和由安裝過程決定的預設的目錄

pythonpath 變數----》環境變數

09.05_Python語言基礎(標準函式庫中的模組)(熟練)

  • math
  • random,
  • os
  • 其他python中自帶的標準函式庫中的模組

09.06_Python語言基礎(使用自定義模組)(重點)

有些時候,Python自帶的模組不能很好的解決我們遇到的問題,我們需要自定義一些具有獨特功能的模組來完成程式碼的編寫

"""
求和函式
需要傳遞兩個引數:
a:int
b : int
返回a+b的和的結果
"""
def add(a,b):
    return a + b

09.07_Python語言基礎(呼叫自定義模組)(掌握)

import test
test.add(1,2)

測試模組

"""
求和函式
需要傳遞兩個引數:
a:int
b : int
返回a+b的和的結果
"""

def add(a,b):
    return a - b

ret = add(1,-0)
print(ret)

為了解決測試的問題,python在執行一個檔案時有個變數__name__
如果直接在test.py模組中可以將print進行修改
print()

if __name__ == "__main__":
     執行語句

呼叫其他專案中模組或者函式時,不能直接通過模組名稱呼叫,可以使用sys模組新增path
import sys
sys.path.append(“所需模組在的專案的工作位置”)

09.08_Python語言基礎(包)(掌握)

  • 定義:
    * 包-----》python中的python package------>資料夾----》容器
  • 問題1:
    • 為什麼需要引入包?
      • 將有練習的模組放到一起(便於查詢歸納整理)
  • 問題2:
    • 如何將有關係的模組聯絡到一起----》將其放入同一個資料夾
  • 問題3:
    * 放入到同一個資料夾後如何去匯入?

  方式1:
  使用import關鍵字匯入
  格式:
    import 檔案.模組
    import day09.test
    # day09.test.add(1,2)
    day09.test.add(1,2)

方式2:
    使用from 資料夾 import 模組
    格式:
    from 資料夾的名字 import 檔名

    from day09 import test

    test.add(1,2)

包使用總結:

總結:
   包將有聯絡的模組組織在一起,放到同一個資料夾下,
在建立資料夾的時候會自動建立一個__init__.py檔案,======》包

想一想

1. __init__.py檔案有什麼用?
   __init__.py控制著包的匯入的行為
2.__init__.py檔案為空?
僅僅是把包匯入,不會匯入該包中的模組

09.09_Python語言基礎(安裝第三方模組)(掌握)

  • https://pypi.org/
  • 不同系統的安裝方式:
    • mac-------》無需安裝
    • Linux------》無需安裝
    • Windows–》pip
  • 比如:pygame 非常強大的遊戲開發庫

格式:
  開啟命令提示符
  DOS命令
  pip install 第三方的模組名(前提都是要求聯網下載)

pip的安裝:

pip的安裝:
1.到https://pypi.python.org/pypi/pip   下載pip版本tar.gz,下載完成直接到本地解壓
2.在DOS命令列進入pip解壓的目錄,輸入python setup.py install進行安裝
3.如果安裝完成  提示finished   
4.如果出現問題提示pip沒有找到該命令,可以將python/Script目錄配置到path環境變數中

安裝PTL

09.10_Python語言基礎(時間相關的模組)(熟練)

  • time
    • import time
  • datetime
    • import datetime
  • calendar
    • import calendar

在python中表示時間的方式:

時間戳(timestamp):
    時間戳表示的是從1970年1月1日00:00:00,按秒計算偏移量
clock(),time()

print(type(time.time()))    #返回的是float
print(time.time())
print(time.clock())

格式化的時間字串(瞭解):

%a    本地簡化的星期的名稱
%A    完整的星期的名稱
%b    簡化的月份的名稱
%B    完整的月份的名稱
%c    本地對應的日期表示和時間表示
%d    月內中的天數(0~31)
%H    24小時制小時數(0~23)
%m    月份(01~12)
%M    分鐘數(00~59)
%w    星期(0~6) 星期天開始

元組:共有9中元素,返回的是struct_time的函式主要有gmtime(),localtime(),strptime()

索引   屬性             值
0     tm_year(年)      2018
1     tm_mon(月)       1~12
2     tm_mday(日)      0~31
3     tm_hour(時)      0~23
4     tm_min(分鐘)     0~59
5     tm_sec(秒)       0~61
6     tm_wday(weekday)   0~6(0表示週日) 
7     tm_yday(一年中的第幾天)   1~366
8     tm_isdst(是否是夏令時)   預設為-1

import time
t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
t = time.mktime(t)
print time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t))

UTC :世界協調時間  格林威治天文時間  世界標準時間
     在中國UTC+8

#localtime():獲取當前時間,返回struct_time格式返回
#獲取當前的時間

# print(time.localtime())

獲取當天的時間和日期

# 獲取當天的時間
print(datetime.datetime.now())
# 當前的日期
print(datetime.date.today())


# 獲取昨天的時間
def getYesterday():
    today = datetime.date.today()
    oneday = datetime.timedelta(days=1)
    yesterday = today - oneday
    print(type(today))
    print(type(yesterday))
    return yesterday
yesterday = getYesterday()
print(yesterday)

#獲取日曆相關的資訊

#獲取某個月的日曆
# 格式:calendar.month(x,y)x:顯示的年份,y
# 顯示的月份
cal = calendar.month(2015,12)
print(cal)
#設定日曆的第一天
calendar.setfirstweekday(calendar.SUNDAY)
cal = calendar.month(2015,12)
print(cal)

#獲取某一年的日曆:
cal = calendar.calendar(2015)#引數為具體的年份
print(cal)
cal = calendar.HTMLCalendar(calendar.MONDAY)
print(cal.formatmonth(2015,12))