Python基礎筆記_Day09_Python模組、自定義模組、包、時間模組
阿新 • • 發佈:2019-01-02
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))