一稍途、模塊介紹
1. 定義:
模塊:本質(zhì)就是.py結(jié)尾的python文件(文件名:test.py,對應(yīng)的模塊名:test)
用來從邏輯上組織python代碼(變量砚婆,函數(shù)械拍,類,邏輯:實現(xiàn)一個功能)
2. 語法:
? import 語句
當(dāng)解釋器遇到import語句装盯,如果模塊在當(dāng)前的搜索路徑就會被導(dǎo)入坷虑。搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。
導(dǎo)入模塊:
1埂奈、 import module1[, module2[,... moduleN]
調(diào)用符號:
? From…import 語句
Python的from語句讓你從模塊中導(dǎo)入一個指定的部分到當(dāng)前命名空間中迄损。語法如下:
1、from modname import name1[, name2[, ... nameN]]
From…import* 語句
把一個模塊的所有內(nèi)容全都導(dǎo)入到當(dāng)前的命名空間也是可行的账磺,只需使用如下聲明:
1芹敌、from modname import *
這提供了一個簡單的方法來導(dǎo)入一個模塊中的所有項目。慎用 from…import *垮抗。
? import 和 from 的區(qū)別:
import導(dǎo)入使用時氏捞,加前綴 module.func。相當(dāng)于把模塊代碼放在當(dāng)前文件中執(zhí)行一遍借宵。
from可以指定需要的函數(shù)或變量導(dǎo)入幌衣。
導(dǎo)入模塊和當(dāng)前py文件都有同一個函數(shù),調(diào)用會調(diào)用哪一個壤玫?
因為python是解釋型豁护,所以后面覆蓋前面。
? from … import … as …
3. import本質(zhì)
import 本質(zhì):
導(dǎo)入一個模塊本質(zhì)就是解釋執(zhí)行一個python文件
導(dǎo)入一個包本質(zhì)就是解釋該包下的__init__.py文件
? __init__.py
包:本質(zhì)就是一個目錄(必須帶有一個__init__.py文件)欲间,用來從邏輯上組織模塊
導(dǎo)入包楚里,怎么導(dǎo)入?
導(dǎo)入包的本質(zhì):執(zhí)行包下面的__init__.py文件
導(dǎo)入包下的模塊
包下面的模塊猎贴,這樣調(diào)用是錯誤的
在__init__.py內(nèi)容中導(dǎo)入模塊
4班缎、路徑搜索和搜索路徑
上面提到的都是導(dǎo)入同級目錄下的模塊蝴光,如果不在同一個目錄下:
import module_name實際找module_name.py文件,是文件就一定要有路徑达址。
導(dǎo)入模塊就是:找到.py文件的位置蔑祟,把它執(zhí)行一遍,從哪里找呢沉唠?sys.path.
5. 導(dǎo)入優(yōu)化
6. 阻止屬性導(dǎo)入
如果你不想讓某個模塊屬性被 “from module import *” 導(dǎo)入 , 那么你可以給你不想導(dǎo)入的屬性名稱加上一個下劃線( _ )疆虚。 不過如果你導(dǎo)入了整個模塊或是你顯式地導(dǎo)入某個屬性這個隱藏數(shù)據(jù)的方法就不起作用了。
二满葛、模塊的分類
a:標準庫
b:開源模塊-第三方模塊
c:自定義模塊
三径簿、常用內(nèi)置模塊
1、os模塊
用于提供系統(tǒng)級別的操作
2嘀韧、time和datetime
在Python中篇亭,通常有這幾種方式來表示時間:
時間戳
格式化的時間字符串
元組(struct_time)共九個元素。
由于Python的time模塊實現(xiàn)主要調(diào)用C庫锄贷,所以各個平臺可能有所不同译蒂。
UTC(Coordinated Universal Time,世界協(xié)調(diào)時)亦即格林威治天文時間肃叶,世界標準時間蹂随。在中國為UTC+8。DST(Daylight Saving Time)即夏令時因惭。
時間戳(timestamp)的方式:通常來說岳锁,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們運行“type(time.time)”蹦魔,返回的是float類型激率。返回時間戳方式的函數(shù)主要有time,clock等勿决。
元組(struct_time)方式:struct_time元組共有9個元素乒躺,返回struct_time的函數(shù)主要有g(shù)mtime,localtime低缩,strptime嘉冒。
時間轉(zhuǎn)為時間戳
格式化時間字符串
轉(zhuǎn)化時間戳和元組到時間字符串
時間加減
3、random模塊
4咆繁、sys模塊
5讳推、shutil模塊
高級的 文件、文件夾玩般、拷貝银觅、壓縮包等 處理模塊
6、ConfigParser
用于對特定的配置進行操作坏为,當(dāng)前模塊的名稱在 python 3.x 版本中變更為 configparser究驴。
來看一個好多軟件的常見文檔格式如下
如果想用python生成一個這樣的文檔怎么做呢镊绪?
? 生成
? 讀取出來
? configparser增刪改查語法
7、hashlib模塊
用于加密相關(guān)的操作洒忧,3.x里代替了md5模塊和sha模塊蝴韭,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法跑慕,hash 加密都是bytes類型
python 還有一個 hmac 模塊万皿,它內(nèi)部對我們創(chuàng)建 key 和 內(nèi)容 再進行處理然后再加密
8摧找、Subprocess模塊
調(diào)用subprocess.run(…)是推薦的常用方法核行,在大多數(shù)情況下能滿足需求,但如果你可能需要進行一些復(fù)雜的與系統(tǒng)的交互的話蹬耘,你還可以用subprocess.Popen,語法如下:
可用參數(shù):
args:shell命令芝雪,可以是字符串或者序列類型(如:list,元組)
bufsize:指定緩沖综苔。0 無緩沖,1 行緩沖,其他 緩沖區(qū)大小,負值 系統(tǒng)緩沖
stdin, stdout, stderr:分別表示程序的標準輸入惩系、輸出、錯誤句柄
preexec_fn:只在Unix平臺下有效如筛,用于指定一個可執(zhí)行對象(callable object)堡牡,它將在子進程運行之前被調(diào)用
close_sfs:在windows平臺下,如果close_fds被設(shè)置為True杨刨,則新創(chuàng)建的子進程將不會繼承父進程的輸入晤柄、輸出、錯誤管道妖胀。 所以不能將close_fds設(shè)置為True同時重定向子進程的標準輸入芥颈、輸出與錯誤(stdin, stdout, stderr)。
shell:同上
cwd:用于設(shè)置子進程的當(dāng)前目錄
env:用于指定子進程的環(huán)境變量赚抡。如果env = None爬坑,子進程的環(huán)境變量將從父進程中繼承。
universal_newlines:不同系統(tǒng)的換行符不同涂臣,True -> 同意使用
startupinfo與createionflags只在windows下有效 將被傳遞給底層的CreateProcess函數(shù)盾计,用于設(shè)置子進程的一些屬性,如:主窗口的外觀赁遗,進程的優(yōu)先級等等
終端輸入的命令分為兩種:
? 輸入即可得到輸出署辉,如:ifconfig
? 輸入進行某環(huán)境,依賴再輸入吼和,如:python
需要交互的命令示例
9涨薪、re-正則表達式模塊
常用正則表達式符號
最常用的匹配語法
分組匹配 和 group、groups炫乓、groupdict
10刚夺、logging模塊
python的logging模塊提供了標準的日志接口献丑,你可以通過它存儲各種格式的日志,logging的日志可以分為 debug, info, warning, error and critical 5個級別侠姑,下面我們看一下怎么用创橄。
最簡單用法
看一下這幾個日志級別分別代表什么意思
如果想把日志寫到文件里,也很簡單
其中下面這句中的level=loggin.INFO意思是莽红,把日志紀錄級別設(shè)置為INFO妥畏,也就是說,只有比日志是INFO或比INFO級別更高的日志才會被紀錄到文件里安吁,在這個例子醉蚁, 第一條日志是不會被紀錄的,如果希望紀錄debug的日志鬼店,那把日志級別改成DEBUG就行了网棍。
如果想同時把log打印在屏幕和文件日志里,就需要了解一點復(fù)雜的知識 了
11妇智、json和pickle數(shù)據(jù)序列化
str eval
數(shù)據(jù)序列化
json只能處理簡單的滥玷,所有語言通用的,函數(shù)不能json序列化
pickle可以序列化python所有的數(shù)據(jù)類型
12巍棱、shelve 模塊
shelve模塊是一個簡單的k,v將內(nèi)存數(shù)據(jù)通過文件持久化的模塊惑畴,可以持久化任何pickle可支持的python數(shù)據(jù)格式
13、xml處理模塊
xml是實現(xiàn)不同語言或程序之間進行數(shù)據(jù)交換的協(xié)議航徙,跟json差不多如贷,但json使用起來更簡單,json之前的交換方式
參考文檔:
14捉偏、PyYAML模塊
Python也可以很容易的處理ymal文檔格式倒得,只不過需要安裝一個模塊,參考文檔
需要python教程+PDF電子書的小伙伴
關(guān)注微信公眾號:速學(xué)Python夭禽,后臺回復(fù):簡書霞掺,即可拿Python學(xué)習(xí)資料