1.定義
模組:用來從邏輯上組織python**(變數、函式、類,邏輯),本質就是.py結尾的python檔案(檔名:test.py,對應的模組名:test)。
包:用來從邏輯上組織模組的,本質就是乙個目錄(必須帶有乙個__init__.py檔案)
2.匯入方法
import module1_name,module2_name #匯入多個模組
from module1_name import * #匯入模組的全部方法
from module1_name import logger,names #匯入模組的多個方法
from module1_name import logger as logger_a #起別名
import 模組名 #匯入的是整個模組
from 模組名 import 方法名 #匯入的是模組中的方法,不建議使用這種匯入,因為如果匯入的模組方法和本程式中的方法重名會有衝突,本程式中的方法覆蓋匯入模組中發方法,所以執行本程式中定義的方法。
通過使用別名可用在呼叫模組方法重名的情況下,直接使用別名。
3.import 本質 (路徑搜尋和搜尋路徑)
匯入模組的本質就是把python檔案解釋一遍。
(import test test='test.py all code')
(from test improt name name='code')
imoprt module_name ——>module_name.py——>module_name.py的路徑——>sys.path
匯入包的本質就是執行該包下的__init__.py檔案
其他目錄檔案需要匯入包時,需要在包目錄下的__init__.py檔案裡新增from . improt 模組名
import 模組名 #本質是解釋整個模組 並賦給模組名。
from module1_name import logger,names #本質是只解釋模組中的某幾個方法。
4.匯入優化
同一目錄下的不同py檔案a、b,a要用b檔案中的方法時:
from b improt 方法名 (也可以起別名 ,as 名)
在a中直接使用方法名就可以。
5.模組的分類
a.標準庫(內建函式)
b.開源模組
c.自定義模組
標準庫:
random.random #取0-1之間的隨機數
random.randrange(1,3)#隨機1-3不包含3
random.randint(0,9) # 隨機取0-9的數,包括0,9
3.os
4.sys
5.shutil
6.xml
7.shelve
8.yaml
9.configparser
10.re
最常用的匹配語法:
re.match 從頭開始匹配常用正規表示式符號:re.search 匹配包含
re.findall 把所有匹配到的字元放到以列表中的元素返回
re.splitall 以匹配到的字元當做列表分隔符
re.sub 匹配字元並替換
'.' 預設匹配除\n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行具體參考:'^' 匹配字元開頭,若指定flags multiline,這種也可以匹配上(r"^a","\nabc\neee",flags=re.multiline)
'$' 匹配字元結尾,或e.search("foo$","bfoo\nsdfsf",flags=re.multiline).group()也可以
'*' 匹配*號前的字元0次或多次,re.findall("ab*","cabb3abcbbac") 結果為['abb', 'ab', 'a']
'+' 匹配前乙個字元1次或多次,re.findall("ab+","ab+cd+abb+bba") 結果['ab', 'abb']
'?' 匹配前乙個字元1次或0次
'' 匹配前乙個字元m次
'' 匹配前乙個字元n到m次,re.findall("ab","abb abc abbcbbb") 結果'abb', 'ab', 'abb']
'|' 匹配|左或|右的字元,re.search("abc|abc","abcbabccd").group() 結果'abc'
'(...)' 分組匹配,re.search("(abc)a(123|456)c", "abcabca456c").group() 結果 abcabca456c
'\a' 只從字元開頭匹配,re.search("\aabc","alexabc") 是匹配不到的
'\z' 匹配字元結尾,同$
'\d' 匹配數字0-9
'\d' 匹配非數字
'\w' 匹配[a-za-z0-9]
'\w' 匹配非[a-za-z0-9]
's' 匹配空白字元、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 結果 '\t'
'(?p...)' 分組匹配 re.search("(?p[0-9])(?p[0-9])(?p[0-9])","371481199306143242").groupdict("city") 結果
11.logging
12.hashlib
反斜槓的困擾
與大多數程式語言相同,正規表示式裡使用"\"作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"\",那麼使用程式語言表示的正規表示式裡將需要4個反斜槓"\\\\":前兩個和後兩個分別用於在程式語言裡轉義成反斜槓,轉換成兩個反斜槓後再在正規表示式裡轉義成乙個反斜槓。python裡的原生字串很好地解決了這個問題,這個例子中的正規表示式可以使用r"\\"表示。同樣,匹配乙個數字的"\\d"可以寫成r"\d"。有了原生字串,你再也不用擔心是不是漏寫了反斜槓,寫出來的表示式也更直觀。
僅需輕輕知道的幾個匹配模式
re.i(re.ignorecase): 忽略大小寫(括號內是完整寫法,下同)m(multiline): 多行模式,改變'^'和'$'的行為(參見上圖)
s(dotall): 點任意匹配模式,改變'.'的行為
python常用模組介紹
import random print random.random 0,1 隨機浮點 print random.randint 1,3 1,3 包含兩邊 print random.randrange 1,3 1,3 不包含3 print random.choice 11,22,33,44,55 對可...
python常用模組介紹(二)
前言 一 第三方模組 二 常用模組之time 總結上一回我聊了一下關於什麼是模組,為什麼使用模組,模組的分類以及如何匯入模組。那麼今天我想聊一下常用的模組 但是,在說常用模組之前,我想先說一下第三方模組 在python中,安裝第三方模組,是通過setuptools這個工具完成的。python有兩個封...
python常用模組介紹(三)
總結最近幾天的事情比較多 今晚總算處理完了 那麼今天來說一說 datetime 相比於time模組,datetime模組的介面則更直觀 更容易呼叫 datetime模組定義了下面這幾個類 import datetime d datetime.datetime.now 返回當前的datetime日期型...