我常用到的python庫

Python 的一大特色是其豐富的模塊,基本上只要你能想到的常見開發需求,都能找到別人已經實現的庫直接使用,或者相關的工具/框架來輔助實現。但這對於新手來說也是一個問題: 這麼多庫,我要從哪裏學起?怎麼才能記住這麼多庫的用法?

對此我的建議:

  1. 不要把學習庫作爲目標。正確的學習邏輯是,去發掘可編程解決的需求,以實現功能爲目標, 在開發過程中去搜索去學習相關的庫 。否則你會陷在茫茫模塊之中失去方向。
  2. 不用去死記庫的用法,你也不可能記下來。 你需要了解的是查找和閱讀文檔的方法,以及常見的開發模式 。所謂開發經驗,並不是你記住的內容,而是你掌握的方法。

我們編程教室在過去發表過數十個開發案例,這些案例主要用到哪些庫呢?今天就來統計一下,順便給大家整理及推薦常用的一些庫。

之前有下載過文章相關代碼的同學應該知道我們這個 snippet 的代碼倉庫,我們大部分的案例項目都在其中。下面就以這個庫中的代碼爲參考進行統計。

統計代碼:



import os
from collections import Counter

modules = set()
all_modules = {}
for root, dirs, files in os.walk("..", topdown=False):
    for name in files:
        if name.endswith('.py'):
            with open(root + os.path.sep + name) as f:
                for line in f:
                    line = line.lstrip()
                    if line.startswith('from') or line.startswith('import'):
                        module = line.split()[1]
                        module = module.split('.')[0]                        if module:
                            modules.add(module)
    if root.count(os.path.sep) <= 1:
        for m in modules:
            all_modules[m] = all_modules.get(m, 0) + 1
        modules = set()
print(Counter(all_modules).most_common())

代碼很簡單,4個步驟:

  1. 遍歷文件夾,找出所有 .py 結尾的代碼文件
  2. 對代碼文件中的每一行,判斷是否以 fromimport 開頭,是的話,就把它後面的模塊名記下來
  3. 爲了避免有的項目中重複導入一個模塊影響數據,對於同一個項目子目錄下,我們用 set 記錄保證不重複,然後再添加到總的記錄字典中
  4. 使用 Counter 對字典進行排序,找到使用次數最多的模塊

最後的結果以及模塊說明(名稱後是使用次數):

random - 10,隨機數
requests - 8,網絡請求
numpy - 8,高性能計算
matplotlib - 7,圖表繪製
time - 7,時間
cv2 - 6,計算機視覺
math - 6,數學
os - 6,系統
collections - 5,集合
pyecharts - 4,圖表繪製
urllib - 4,網絡請求
datetime - 4,日期與時間
bs4 - 4,HTML文本解析
tkinter - 3,圖形界面GUI
sys - 3,系統
jieba - 3,中文分詞
pandas - 2,數據統計分析
scipy - 2,科學計算
re - 2,正則表達式
argparse - 2,命令行參數
pygame - 2,遊戲
json - 2,JSON格式處理
email - 2,郵件
smtplib - 2,郵件
urllib2 - 2,網絡請求
pyaudio - 2,聲音
PIL - 2,圖像處理

除了 random、time、math 這類 python 自帶的基礎庫外,從以上統計可以間接看出,我們的案例比較多的會涉及 網絡數據的抓取 (requests、urllib、bs4)、 數據分析及可視化 (numpy、matplotlib、pyecharts、pandas)、 計算機視覺及圖像處理 (cv2、PIL)等方向。

對於已經學完 python 基本語法,想要進一步深入學習的同學,可根據方向重點關注以下庫:

Web 開發:django / flask
網絡爬蟲:requests、bs4
數據分析:numpy、pandas、matplotlib
視覺及圖像處理:cv2、PIL(pillow)
圖形界面開發:tkinter / PyQT
遊戲開發:pygame / cocos-python

不用貪多,找個自己感興趣的方向,選一些可行的案例進行開發,把基本的幾個庫用熟了,這個過程你得到成長就會很多。 寫代碼的目的是解決問題,調用庫只是實現的手段,千萬不要本末倒置了。

統計的代碼也上傳了倉庫,需要的話可在 公衆號(Crossin的編程教室) 回覆關鍵字 模塊

════

其他文章及回答:

如何自學Python | 新手引導 | 一圖學Python | 智能防擋彈幕 | 紅包提醒 | 流浪地球

歡迎搜索及關注: Crossin的編程教室

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章