Python 的一大特色是其豐富的模塊,基本上只要你能想到的常見開發需求,都能找到別人已經實現的庫直接使用,或者相關的工具/框架來輔助實現。但這對於新手來說也是一個問題: 這麼多庫,我要從哪裏學起?怎麼才能記住這麼多庫的用法?
對此我的建議:
- 不要把學習庫作爲目標。正確的學習邏輯是,去發掘可編程解決的需求,以實現功能爲目標, 在開發過程中去搜索去學習相關的庫 。否則你會陷在茫茫模塊之中失去方向。
- 不用去死記庫的用法,你也不可能記下來。 你需要了解的是查找和閱讀文檔的方法,以及常見的開發模式 。所謂開發經驗,並不是你記住的內容,而是你掌握的方法。
我們編程教室在過去發表過數十個開發案例,這些案例主要用到哪些庫呢?今天就來統計一下,順便給大家整理及推薦常用的一些庫。
之前有下載過文章相關代碼的同學應該知道我們這個 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個步驟:
- 遍歷文件夾,找出所有
.py
結尾的代碼文件 - 對代碼文件中的每一行,判斷是否以
from
或import
開頭,是的話,就把它後面的模塊名記下來 - 爲了避免有的項目中重複導入一個模塊影響數據,對於同一個項目子目錄下,我們用
set
記錄保證不重複,然後再添加到總的記錄字典中 - 使用
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的編程教室