python 常用模組介紹

2022-08-26 06:45:10 字數 3351 閱讀 5482

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日期型...