老男孩教育python全棧第22期Day15筆記
阿新 • • 發佈:2020-09-10
day15
-
今日內容大綱
-
昨日內容回顧作業講解
-
裝飾器:完美的呈現了開放封閉原則。裝飾器的本質:閉包。
-
def wraper(f): def inner(*args, **kwargs): """執行被裝飾函式之前的操作""" ret = f(*args, **kwargs) """執行被裝飾函式之後的操作""" return ret return inner
-
-
今日內容
-
自定義模組:
- 什麼是模組:本質就是一個.py檔案,封裝語句的最小單位。
- 自定義模組:實際上就是定義.py檔案,其中可以包含,變數定義,可執行語句,for迴圈,函式定義等等,它們統成為模組的成員。
-
模組的執行方式:
- 指令碼方式:直接用直譯器執行,或者pycharm中右鍵執行。
- 模組方式:被其他的模組匯入。為匯入它的模組提供資源(函式定義,類定義,變數等)。
-
__name__的使用:
- 在指令碼方式執行時,_name__是固定的字串:_main
- 在義模組方式匯入時,__name__就是本模組的名字。
-
系統匯入模組時的路徑
- 記憶體中:如果之前成功匯入模組,直接使用已經存在的模組
- 內建路徑中:安裝路徑下:Lib
- PYTHONPATH:import時尋找模組的路徑。(一般不用。)
- sys.path:是一個路徑的列表。
如果都找不到,就報錯。
動態修改sys.path。
os.path.dirname()獲取某個路徑的父路徑。通常用於獲取當前模組的相對路徑。
import sys import os # print(os.path.dirname((__file__)) + '/aa') sys.path.append(os.path.dirname((__file__)) + '/aa')
-
匯入模組的多種方式:
- import xxx:匯入一個模組的所有成員。
- import aaa, bbb:一次性匯入多個模組的成員。不推薦這種寫法,分開寫。import os,sys 這倆是黃金搭檔可以一起寫。
- from xxx import a:從某個模組中匯入指定的成員。
- from xxx import a,b,c:從某個模組中匯入多個成員。
- form xxx import *:從一個模組中匯入所以的成員。
-
import xxx 和 form xxx import *的區別
- 第一種方式在使用其中成員時,必須使用模組名作為字首。不容易產生命名衝突。
- 第二種方式在使用其中成員時,不用使用模組名作為字首,直接使用成員名即可。容易產生命名衝突。在後面定義的成員名生效(把前面的覆蓋了)。
- 怎麼解決名稱衝突問題?
- 改用 import xxx。
- 自己避免使用同名。
- 使用別名解決衝突
- 使用別名:alias
- 給成員起別名,避免名稱衝突。from my_modul import age as a
- 給模組器別名,目的簡化書寫。import my_modul as m
-
form xxx import *預設控制成員被匯入
- 預設情況下,所以的成員都會被匯入。
__all__
是一個列表,用於表示本模組可以被外界使用的成員。元素時成員名組成的字串。- 使用
__all__
控制哪些成員可以被外界使用 只對於 from import 起作用
-
相對匯入
-
針對某個專案中的不同模組之間進行匯入,叫做相對匯入。
-
只有一種格式:from 相對路徑 import xxx
- 相對路徑:包含了待你好的一個相對路徑。
- .表示的是當前的路徑。
- ..表示的是父路徑
- ...表示的是父路徑的父路徑
# 相對匯入同項目下的模組 # from ..z import zz # 容易象外界暴露zz模組 from ..z.zz import *
# 不使用相對匯入的方式,匯入本專案中的模組 # 通過當前檔案的路徑找到你想匯入的z的路徑 import os,sys sys.path.append(os.path.dirname(os.path.dirname(__file__)) + '/z') from zz import *
-
-
常用模組:time,datatime,random
- random
- 此模組提供了隨機數獲取的相關的方法。官方文件(C:\Users\libo\AppData\Local\Programs\Python\Python36\Doc)
- random.random():獲取[0.0,1.0)範圍內的浮點數。
- random.randint(a,b):獲取[a,b]範圍內的一個整數。
- random.uniform(a,b):獲取[a,b)範圍內的浮點數。
- random.shuffle(x):把引數指定的資料中的元素混洗,其中引數為變的資料型別。
- random.sample(x,k):從x中隨機抽取k個數據,組成一個列表返回。
- random
-
-
今日總結
函式總結思維導圖
GitHub倉庫
https://github.com/libo-sober/LearnPython/tree/master/day12 -
預習內容