国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Python > 正文

Python 中 -m 的典型用法、原理解析與發(fā)展演變

2024-09-09 19:02:24
字體:
來源:轉載
供稿:網(wǎng)友

在命令行中使用 Python 時,它可以接收大約 20 個選項(option),語法格式如下:

python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

本文想要聊聊比較特殊的“-m”選項: 關于它的典型用法、原理解析與發(fā)展演變的過程。

首先,讓我們用“--help”來看看它的解釋:

-m mod run library module as a script (terminates option list)

"mod"是“module”的縮寫,即“-m”選項后面的內容是 module(模塊),其作用是把模塊當成腳本來運行。

“terminates option list”意味著“-m”之后的其它選項不起作用,在這點上它跟“-c”是一樣的,都是“終極選項”。官方把它們定義為“接口選項”(Interface options),需要區(qū)別于其它的普通選項或通用選項。

-m 選項的五個典型用法

Python 中有很多使用 -m 選項的場景,相信大家可能會用到或者看見過,我在這里想分享 5 個。

在 Python3 中,只需一行命令就能實現(xiàn)一個簡單的 HTTP 服務:

python -m http.server 8000# 注:在 Python2 中是這樣python -m SimpleHTTPServer 8000

執(zhí)行后,在本機打開“ http://localhost:8000  ”,或者在局域網(wǎng)內的其它機器上打開“  http://本機ip:8000   ”,就能訪問到執(zhí)行目錄下的內容,例如下圖就是我本機的內容:

與此類似,我們只需要一行命令“python -m pydoc -p xxx”,就能生成 HTML 格式的官方幫助文檔,可以在瀏覽器中訪問。

上面的命令執(zhí)行了 pydoc 模塊,會在 9000 端口啟動一個 http 服務,在瀏覽器中打開,我的結果如下:

它的第三個常見用法是執(zhí)行 pdb 的調試命令“python -m pdb xxx.py”,以調試模式來執(zhí)行“xxx.py”腳本:

第四個同樣挺有用的場景是用 timeit 在命令行中測試一小段代碼的運行時間。以下的 3 段代碼,用不同的方式拼接 “0-1-2-……-99” 數(shù)字串。可以直觀地看出它們的效率差異:

最后,還有一種常常被人忽略的場景:“python -m pip install xxx”。我們可能會習慣性地使用“pip install xxx”,或者做了版本區(qū)分時用“pip3 install xxx”,總之不在前面用“python -m”做指定。但這種寫法可能會出問題。

很巧合的是,在本月初(2019.11.01),Python 的核心開發(fā)者、第一屆指導委員會 五人成員之一的 Brett Cannon 專門寫了一篇博客《 Why you should use "python -m pip" 》,提出應該使用“python -m pip”的方式,并做了詳細的解釋。

他的主要觀點是:在存在多個 Python 版本的環(huán)境中,這種寫法可以精確地控制三方庫的安裝位置。例如用“python3.8 -m pip”,可以明確指定給 3.8 版本安裝,而不會混淆成其它的版本。

(延伸閱讀:關于 Brett 的文章,這有一篇簡短的歸納《 原來我一直安裝 Python 庫的姿勢都不對呀! 》)

-m 選項的兩種原理解析

看了前面的幾種典型用法,你是否開始好奇:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湟源县| 长武县| 大邑县| 清镇市| 栾城县| 寻甸| 惠水县| 秀山| 罗城| 平定县| 保靖县| 沙田区| 汶川县| 乐安县| 玛多县| 巩义市| 乌鲁木齐县| 海城市| 东乡族自治县| 苍溪县| 常熟市| 原阳县| 盘锦市| 大洼县| 准格尔旗| 宁化县| 浮山县| 探索| 保靖县| 铁力市| 隆子县| 巴里| 丹东市| 若尔盖县| 奉新县| 叙永县| 宿州市| 鲁山县| 文登市| 龙南县| 海原县|