#1 Python靈活技巧

前言

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]
点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *