前言
Python基礎系列博文已順利結束,從這一篇開始將進入探索更加高級的Python用法,Python進階系列文章將包含面向對象、網絡編程、GUI編程、線程和進程、連接數據庫等。不過在進階之前,先來熟練使用一些Python的小技巧,這就好像操作系統的快捷鍵一樣,熟練掌握這些小技巧會讓你工作起來事半功倍,話不多說,盤它!
Python常用技巧
技巧一:加速pip安裝
使用pip安裝第三方模塊時,網速總是很慢,這是因為pip的鏡像源在國外,如果換成國內穩定的鏡像源速度將會飛起,這里推薦豆瓣的鏡像源
「本次安裝時更改為豆瓣鏡像源,使用 -i 指定鏡像源」
pip install -i https://pypi.douban.com/simple 模塊
「永久更改為豆瓣鏡像源,推薦」
Linux/macOS平台:
修改pip的配置文件,文件位置~/.pip/.pip.conf(如果沒有自己創建即可),將其改為如下內容保存:
[global] index-url = https://pypi.douban.com/simple
Windows平台:
打開資源管理器,在地址欄輸入%appdata%后回車,在此位置新建pip文件夾,進入pip文件夾,新建pip.ini文件,鼠標右鍵用記事本打開,輸入如下內容保存:
[global] index-url = https://pypi.douban.com/simple
技巧二:pip命令補全
pip命令可以想Linux命令一樣使用tab鍵補全,只需運行如下命令即可:
Linux/macOS平台:
「bash用戶」
$ pip completion -b >> ~/.profile
「zsh用戶」
$ pip completion -z >> ~/.zshrc
技巧三:pip批量安裝模塊
有時一個Python項目需要用到大量第三方模塊,手動使用pip一條一條安裝是不現實的,這時就要使用批量安裝了,將需要的模塊寫入requirements.text文件中,一個模塊占用一行,模塊名必須有,版本號可有可無(通常項目開發者會創建這個文件,方便其他使用者安裝模塊),這時使用pip批量安裝即可:
$ pip install -r requirements.text
技巧四:檢測模塊是否正確安裝
當我們安裝了一個第三方模塊時,第一步總是要檢測其是否正確安裝,通常做法是打開python交互界面,輸入 import 模塊 回車后如果不拋出異常則證明成功安裝,否則安裝失敗。這種方法應對一兩個模塊還行,但是如果需要檢測上百個模塊怎么辦?這時就需要命令方式來檢測了:
$ python -c 'import jieba' # jieba模塊已經正確安裝,不會返回任何信息 $ python -c 'import flask' # flask模塊沒有安裝,拋出異常 Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'flask'
使用這種命令的方式可以大大的提高檢測效率,只需要編寫一個Shell或者Python腳本就可以實現了
技巧五:快速將json字符串轉換為字典格式
有時需要將一個json字符串轉換為字典,但是又不想新建Python文件導入json模塊,那怎么辦呢?快洗洗睡哇!!!其實還真有辦法,那就是使用json.tool在命令行直接解析:
$ echo '{"name": "MinuteSheep", "age": 99, "gender": "male"}' | python -m json.tool { "name": "MinuteSheep", "age": 99, "gender": "male" }
可以看到非常方便,連格式都自動格式化了
技巧六:秒開下載服務器
日常生活中,經常要拷貝和被拷貝同學或者同事的文件,要么用U盤,要么登錄QQ,總感覺很煩!!!此時,使用Python秒開一個下載服務器將會解決你的所有煩惱,尤其是對於在同一個網絡環境下的用戶。將需要傳給同事的文件拷貝到一個文件夾,之后在這個文件夾中輸入如下命令:
$ python -m http.server Serving HTTP on 0.0.0.0 port 8000 ...
這時候在同一個網絡下的用戶便可以用瀏覽器訪問這個目錄了(訪問方法:假如我的IP地址為123.123.123.123,其他用戶只需在瀏覽器地址欄輸入:123.123.123.123:8000)點擊文件下載即可,超方便有沒有,這該死的無處安放的魅力啊~
技巧七:同時遍歷多個可迭代對象
有時在處理數據的時候,經常出現這種情況:名字有一個單獨的列表,性別有一個單獨的列表,年齡有一個單獨的列表,當你想一一對應的時候,一定會嘗試這樣做:
In [1]: name = ['aa','bb','cc','dd','ff'] In [2]: age = [12,13,14,15,14] In [3]: gender = ['m','f','m','f','f'] In [4]: for n,a,g in name,age,gender: ...: print(n,a,g) ...: --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-4-c3abaee834b9> in <module> ----> 1 for n,a,g in name,age,gender: 2 print(n,a,g) 3 ValueError: too many values to unpack (expected 3) # 可以看到拋出參數過多異常,列表不能迭代超過一個🙉🙉🙉🙉🙉
這時就要使用內置函數zip,縫合它!
In [1]: name = ['aa','bb','cc','dd','ff'] In [2]: age = [12,13,14,15,14] In [3]: gender = ['m','f','m','f','f'] In [5]: for n,a,g in zip(name,age,gender): ...: print(n,a,g) ...: aa 12 m bb 13 f cc 14 m dd 15 f ff 14 f # 正確!🙊🙊🙊🙊🙊
技巧八:批量將字符串格式轉換為數字格式
假如你有一個列表
num = ['1', '23.4', '34.7', '12']
現在需要將列表里的元素轉換為數字格式進行計算,要怎么辦呢?煩skr人~~這樣干:
In [21]: num = ['1', '23.4', '34.7', '12'] # 元素為字符串型 In [22]: num = list(map(float, num)) # 使用內置函數map返回一個map對象,再用list將其轉換為列表 In [23]: num # 元素變為浮點型 Out[23]: [1.0, 23.4, 34.7, 12.0]