python模塊

python的優(yōu)點(diǎn)在于有大量3的內(nèi)置模塊和第三方模塊,使用這些模塊我們可以方便地實(shí)現(xiàn)需要的功能允趟。本文主要介紹python的模塊結(jié)構(gòu)及常用的內(nèi)置模塊和第三方模塊。

1. 模塊簡(jiǎn)介

模塊即包括python聲明及定義的文件。一個(gè)python文件就是一個(gè)模塊掸掸。如編寫一個(gè)test.py文件,我們需要將這個(gè)文件作為模塊導(dǎo)入蹭秋,只需要這樣寫:import test 扰付。這樣我們就把test.py作為模塊導(dǎo)入到當(dāng)前文件,可以使用該模塊定義的功能仁讨。模塊名可以使用全局變量__name__得到羽莺。

import os
import re
from datetime import datetime

print(os.__name__)
print(re.__name__)

if __name__ == "__main__":
    pass
# 結(jié)果
os
re

在上面代碼中,可以看到有一行:if __name__ == "__main__":洞豁,這行代碼為模塊提供了一個(gè)便于測(cè)試的用戶接口盐固。當(dāng)我們直接運(yùn)行該文件時(shí),__name__變量值為"__main__"丈挟,結(jié)果為True刁卜,可直接運(yùn)行。當(dāng)作為第三方模塊導(dǎo)入時(shí)曙咽,__name__變量為模塊名蛔趴,結(jié)果為False,不能運(yùn)行該文件例朱,但我們可使用該文件內(nèi)部定義的功能孝情。因此我們編寫python文件時(shí),通常在該行代碼上面定義功能(函數(shù)洒嗤、類等)箫荡,在下面定義執(zhí)行代碼,便于檢驗(yàn)功能正確性渔隶。

除此之外羔挡,我們可以使用包來(lái)組織模塊,避免模塊名的沖突。實(shí)質(zhì)上婉弹,包就是一個(gè)包含多個(gè)python文件的目錄睬魂。注意:該目錄下一定有一個(gè)__init__.py文件,該文件表示當(dāng)前目錄是一個(gè)包镀赌。除此之外氯哮,包目錄下一般有一個(gè)__pycache__目錄,該目錄會(huì)緩存每個(gè)模塊編譯后的文件(.pyc文件:)商佛。執(zhí)行某個(gè)模塊時(shí)喉钢,會(huì)檢查源文件與編譯版文件的修改日期確定是否需要重新編譯。當(dāng)我們導(dǎo)入模塊時(shí)良姆,解釋器會(huì)搜索當(dāng)前目錄肠虽,所有已安裝模塊和第三方模塊。搜索路徑可通過(guò)sys模塊的path變量獲取玛追。如:

>>> import sys
>>> sys.path
['D:\\software\\PyCharm 2018.1.1\\helpers\\pydev', 'E:\\Code exercise\\Code-exercise\\python', 'E:\\graduation-project', 'D:\\software\\PyCharm 2018.1.1\\helpers\\pydev', 'E:\\env-python\\Scripts\\python36.zip', 'E:\\env-python\\DLLs', 'E:\\env-python\\lib', 'E:\\env-python\\Scripts', 'd:\\software\\python3\\Lib', 'd:\\software\\python3\\DLLs', 'E:\\env-python', 'E:\\env-python\\lib\\site-packages', 'E:\\env-python\\lib\\site-packages\\dlib-19.10.0-py3.6-win-amd64.egg', 'D:\\software\\PyCharm 2018.1.1\\helpers\\pycharm_matplotlib_backend', 'E:\\Code exercise\\Code-exercise\\python', 'E:\\graduation-project', 'E:/Code exercise/Code-exercise/python']

2. 常用內(nèi)置模塊

2.1 os模塊

os模塊封裝了常見的文件和目錄操作税课。下面列舉常用的方法:

附菜鳥教程的os模塊:https://www.runoob.com/python3/python3-os-file-methods.html

img
2.2 日期時(shí)間模塊

附菜鳥教程的時(shí)間日期模塊參考:https://www.runoob.com/python3/python3-date-time.html

time模塊

time模塊包含多個(gè)有關(guān)時(shí)間處理的函數(shù)。下表顯示常用方法:

方法 說(shuō)明
time.time() 返回以秒為單位的浮點(diǎn)數(shù)時(shí)間(unix時(shí)間戳痊剖,從1970-01-01 00:00:00 UTC)
time.clock() 返回處理器時(shí)間
time.sleep() 休眠n秒
time.ctime() 將以秒表示的時(shí)間(time.time())轉(zhuǎn)換為當(dāng)?shù)貢r(shí)間的字符串
time.localtime() 將秒為單位的時(shí)間轉(zhuǎn)換為表示當(dāng)?shù)貢r(shí)間的時(shí)間元組
time.gmtime() 將秒為單位的時(shí)間轉(zhuǎn)換為UTC時(shí)間的時(shí)間元組
time.asctime() 將時(shí)間元組轉(zhuǎn)換為當(dāng)?shù)貢r(shí)間的字符串
time.mktime() 將時(shí)間元組轉(zhuǎn)換為掛鐘時(shí)間
import time

print(time.time())   # 返回以秒為單位的浮點(diǎn)數(shù)時(shí)間(unix時(shí)間戳韩玩,從1970-01-01 00:00:00 UTC)
print(time.clock())  # 返回處理器時(shí)間
print(time.ctime())  # 將以秒表示的時(shí)間(time.time())轉(zhuǎn)換為當(dāng)?shù)貢r(shí)間的字符串
for x in range(3):
    print('hello world')
    time.sleep(0.1)  # 休眠n秒
print(time.asctime())  # 將時(shí)間元組轉(zhuǎn)換為當(dāng)?shù)貢r(shí)間的字符串
print(time.localtime())  # 將秒為單位的時(shí)間轉(zhuǎn)換為表示當(dāng)?shù)貢r(shí)間的時(shí)間元組
print(time.gmtime())  # 將秒為單位的時(shí)間轉(zhuǎn)換為UTC時(shí)間的時(shí)間元組
print(time.mktime(time.localtime()))  # 將時(shí)間元組轉(zhuǎn)換為掛鐘時(shí)間
# 結(jié)果
1525878891.406281
4.276538056912168e-07
Wed May  9 23:14:51 2018
hello world
hello world
hello world
Wed May  9 23:14:51 2018
time.struct_time(tm_year=2018, tm_mon=5, tm_mday=9, tm_hour=23, tm_min=14, tm_sec=51, tm_wday=2, tm_yday=129, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=5, tm_mday=9, tm_hour=15, tm_min=14, tm_sec=51, tm_wday=2, tm_yday=129, tm_isdst=0)
1525878891.0

datetime模塊

datetime模塊對(duì)time模塊進(jìn)行了封裝。包含多個(gè)有關(guān)日期時(shí)間處理的函數(shù)陆馁。

方法 說(shuō)明
datetime.now() 返回一個(gè)datetime對(duì)象找颓,表示當(dāng)?shù)貢r(shí)間
datetime.utcnow() 返回一個(gè)datetime對(duì)象,表示UTC時(shí)間
object_datetime.timestamp() 將一個(gè)datetime對(duì)象轉(zhuǎn)換為unix時(shí)間戳
datetime.fromtimestamp() 將Unix時(shí)間戳轉(zhuǎn)換為datetime對(duì)象
datetime.strftime() 將datetime對(duì)象格式化輸出為字符串
datetime.strptime() 將時(shí)間字符串轉(zhuǎn)換為datetime對(duì)象
from datetime import datetime

print(datetime.now())  # 返回一個(gè)datetime對(duì)象叮贩,表示當(dāng)?shù)貢r(shí)間
print(datetime.utcnow())  # 返回一個(gè)datetime對(duì)象击狮,表示UTC時(shí)間
test_time = datetime.utcnow()
print(test_time.timestamp())  # 將一個(gè)datetime對(duì)象轉(zhuǎn)換為unix時(shí)間戳
print(datetime.fromtimestamp(1525849091.98994))  # 將Unix時(shí)間戳轉(zhuǎn)換為datetime對(duì)象
print(datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S.%f'))  # 將datetime對(duì)象格式化輸出為字符串
print(datetime.strptime('2018-05-09 23:04:12.119774', '%Y-%m-%d %H:%M:%S.%f'))  # 將時(shí)間字符串轉(zhuǎn)換為datetime對(duì)象
# 結(jié)果
2018-05-09 23:14:51.708639
2018-05-09 15:14:51.708639
1525850091.708639
2018-05-09 14:58:11.989940
2018-05-09 23:14:51.708639
2018-05-09 23:04:12.119774
2.3 collections模塊

python內(nèi)置的集合模塊,提供很多有用的集合類益老。

namedtuple:命名元組彪蓬,為一個(gè)函數(shù),可用來(lái)創(chuàng)建一個(gè)自定義的tuple對(duì)象捺萌。其可規(guī)定元素的個(gè)數(shù)寞焙,并可使用屬性(不是索引)來(lái)訪問(wèn)某個(gè)元素 語(yǔ)法:namedtuple('name', [元素])

import collections

Circle = collections.namedtuple('Circle', ['x', 'y', 'z'])
print(isinstance(Circle, tuple))
circle = Circle(5, 6, 7)
print(circle.x, circle.y, circle.z)

# 執(zhí)行結(jié)果
False
5 6 7

deque:列表list為先行存儲(chǔ),數(shù)據(jù)量較大時(shí)互婿,插入刪除效率較低。deque是可實(shí)現(xiàn)高效插入和刪除的雙向列表辽狈,適合用于隊(duì)列和棧慈参。deque不僅實(shí)現(xiàn)了list的append和pop,還支持appendleft()和popleft().

import collections

deque_list = collections.deque([1, 2, 3])
print(type(deque_list))
deque_list.appendleft(5)
deque_list.append(6)
print(deque_list)

# 執(zhí)行結(jié)果
<class 'collections.deque'>
deque([5, 1, 2, 3, 6])
2.4 hashlib模塊

提供常用的摘要算法刮萌,如MD5,SHA1等驮配。摘要算法:通過(guò)一個(gè)函數(shù),將任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換為一個(gè)長(zhǎng)度固定的數(shù)據(jù)串(通常用16進(jìn)制的字符串表示)

import hashlib

md5 = hashlib.md5()
md5.update("how to use md5 in python hashlib?".encode('utf-8'))
print(md5.hexdigest())

# 執(zhí)行結(jié)果
d26a53750bc40b38b65a520292f69306
2.5 urllib模塊

提供了一系列操作URL的功能,可用來(lái)模擬瀏覽器執(zhí)行g(shù)et post等請(qǐng)求

from urllib import request

with request.urlopen("http://www.baidu.com") as f:
    data = f.read()
    print("status:", f.status, f.reason)
    for k, v in f.getheaders():
        print("%s: %s" % (k, v))
print('Data:', data.decode('utf-8'))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壮锻,一起剝皮案震驚了整個(gè)濱河市琐旁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猜绣,老刑警劉巖灰殴,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掰邢,居然都是意外死亡牺陶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門辣之,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掰伸,“玉大人,你說(shuō)我怎么就攤上這事怀估∈ㄑ迹” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵多搀,是天一觀的道長(zhǎng)歧蕉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)酗昼,這世上最難降的妖魔是什么廊谓? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮麻削,結(jié)果婚禮上蒸痹,老公的妹妹穿的比我還像新娘。我一直安慰自己呛哟,他們只是感情好叠荠,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扫责,像睡著了一般榛鼎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳖孤,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天者娱,我揣著相機(jī)與錄音,去河邊找鬼苏揣。 笑死黄鳍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的平匈。 我是一名探鬼主播框沟,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼藏古,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了忍燥?” 一聲冷哼從身側(cè)響起拧晕,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梅垄,沒(méi)想到半個(gè)月后厂捞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哎甲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年蔫敲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炭玫。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奈嘿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吞加,到底是詐尸還是另有隱情裙犹,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布衔憨,位于F島的核電站叶圃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏践图。R本人自食惡果不足惜掺冠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望码党。 院中可真熱鬧德崭,春花似錦、人聲如沸揖盘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)兽狭。三九已至憾股,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箕慧,已是汗流浹背服球。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颠焦,地道東北人斩熊。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蒸健,于是被迫代替她去往敵國(guó)和親座享。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 模塊和包 一 模塊 1 什么是模塊? 常見的場(chǎng)景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件盯捌,文件名就是...
    go以恒閱讀 2,281評(píng)論 0 4
  • 模塊簡(jiǎn)介 在軟件開發(fā)過(guò)程中淳衙,隨著代碼的不斷增加,在一個(gè)問(wèn)價(jià)里代碼就會(huì)越來(lái)越長(zhǎng)饺著,不容易維護(hù)箫攀。為了編寫可維護(hù)的代碼,我...
    齊天大圣李圣杰閱讀 801評(píng)論 0 0
  • 轉(zhuǎn)載至:https://cloud.tencent.com/developer/article/1175296 模...
    廣州_ming閱讀 532評(píng)論 0 0
  • 從來(lái)沒(méi)有想過(guò)梢睛,有一天我的心態(tài)會(huì)如此的平靜。是這段時(shí)間的起起落落识椰,還是生活對(duì)我的千磨萬(wàn)擊绝葡?是自己的恍然大悟還是頓悟?...
    龍少爺?shù)那閼?/span>閱讀 283評(píng)論 0 2
  • “就去這兒了腹鹉!我來(lái)規(guī)劃路線藏畅。”身旁看著電腦功咒,手指快速滑動(dòng)翻著電腦地圖的鑫激動(dòng)地對(duì)著我說(shuō)愉阎。他一臉認(rèn)真,眼睛瞪的大大的...
    李生鈺vincent閱讀 622評(píng)論 1 5