热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我常用到的python库

Python的一大特色是其丰富的模块,基本上只要你能想到的常见开发需求,都能找到别人已经实现的库直接使用,或者相关的工具框架来辅助实现。但

Python 的一大特色是其丰富的模块,基本上只要你能想到的常见开发需求,都能找到别人已经实现的库直接使用,或者相关的工具/框架来辅助实现。但这对于新手来说也是一个问题:这么多库,我要从哪里学起?怎么才能记住这么多库的用法?

对此我的建议:

  1. 不要把学习库作为目标。正确的学习逻辑是,去发掘可编程解决的需求,以实现功能为目标,在开发过程中去搜索去学习相关的库。否则你会陷在茫茫模块之中失去方向。
  2. 不用去死记库的用法,你也不可能记下来。你需要了解的是查找和阅读文档的方法,以及常见的开发模式。所谓开发经验,并不是你记住的内容,而是你掌握的方法。

我们编程教室在过去发表过数十个开发案例,这些案例主要用到哪些库呢?今天就来统计一下,顺便给大家整理及推荐常用的一些库。

之前有下载过文章相关代码的同学应该知道我们这个 snippet 的代码仓库,我们大部分的案例项目都在其中。下面就以这个库中的代码为参考进行统计。

统计代码:

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

代码很简单&#xff0c;4个步骤&#xff1a;

  1. 遍历文件夹&#xff0c;找出所有 .py 结尾的代码文件
  2. 对代码文件中的每一行&#xff0c;判断是否以 fromimport 开头&#xff0c;是的话&#xff0c;就把它后面的模块名记下来
  3. 为了避免有的项目中重复导入一个模块影响数据&#xff0c;对于同一个项目子目录下&#xff0c;我们用 set 记录保证不重复&#xff0c;然后再添加到总的记录字典中
  4. 使用 Counter 对字典进行排序&#xff0c;找到使用次数最多的模块

最后的结果以及模块说明&#xff08;名称后是使用次数&#xff09;&#xff1a;

random - 10&#xff0c;随机数
requests - 8&#xff0c;网络请求
numpy - 8&#xff0c;高性能计算
matplotlib - 7&#xff0c;图表绘制
time - 7&#xff0c;时间
cv2 - 6&#xff0c;计算机视觉
math - 6&#xff0c;数学
os - 6&#xff0c;系统
collections - 5&#xff0c;集合
pyecharts - 4&#xff0c;图表绘制
urllib - 4&#xff0c;网络请求
datetime - 4&#xff0c;日期与时间
bs4 - 4&#xff0c;HTML文本解析
tkinter - 3&#xff0c;图形界面GUI
sys - 3&#xff0c;系统
jieba - 3&#xff0c;中文分词
pandas - 2&#xff0c;数据统计分析
scipy - 2&#xff0c;科学计算
re - 2&#xff0c;正则表达式
argparse - 2&#xff0c;命令行参数
pygame - 2&#xff0c;游戏
json - 2&#xff0c;JSON格式处理
email - 2&#xff0c;邮件
smtplib - 2&#xff0c;邮件
urllib2 - 2&#xff0c;网络请求
pyaudio - 2&#xff0c;声音
PIL - 2&#xff0c;图像处理

除了 random、time、math 这类 python 自带的基础库外&#xff0c;从以上统计可以间接看出&#xff0c;我们的案例比较多的会涉及网络数据的抓取&#xff08;requests、urllib、bs4&#xff09;、数据分析及可视化&#xff08;numpy、matplotlib、pyecharts、pandas&#xff09;、计算机视觉及图像处理&#xff08;cv2、PIL&#xff09;等方向。

对于已经学完 python 基本语法&#xff0c;想要进一步深入学习的同学&#xff0c;可根据方向重点关注以下库&#xff1a;

Web 开发&#xff1a;django / flask
网络爬虫&#xff1a;requests、bs4
数据分析&#xff1a;numpy、pandas、matplotlib
视觉及图像处理&#xff1a;cv2、PIL&#xff08;pillow&#xff09;
图形界面开发&#xff1a;tkinter / PyQT
游戏开发&#xff1a;pygame / cocos-python

不用贪多&#xff0c;找个自己感兴趣的方向&#xff0c;选一些可行的案例进行开发&#xff0c;把基本的几个库用熟了&#xff0c;这个过程你得到成长就会很多。写代码的目的是解决问题&#xff0c;调用库只是实现的手段&#xff0c;千万不要本末倒置了。

统计的代码也上传了仓库&#xff0c;需要的话可在公众号&#xff08;Crossin的编程教室&#xff09;回复关键字 模块


════

其他文章及回答&#xff1a;

如何自学Python | 新手引导 | 一图学Python | 智能防挡弹幕 | 红包提醒 | 流浪地球

欢迎搜索及关注&#xff1a;Crossin的编程教室



推荐阅读
author-avatar
qiuyuehuang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有