设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6776|回复: 0
打印 上一主题 下一主题

我常用到的python库

[复制链接]

169

主题

1

好友

733

积分

版主

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2019-2-20 17:32:53 |只看该作者 |倒序浏览

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

对此我的建议:
不要把学习库作为目标。正确的学习逻辑是,去发掘可编程解决的需求,以实现功能为目标,在开发过程中去搜索去学习相关的库。否则你会陷在茫茫模块之中失去方向。不用去死记库的用法,你也不可能记下来。你需要了解的是查找和阅读文档的方法,以及常见的开发模式。所谓开发经验,并不是你记住的内容,而是你掌握的方法。
我们编程教室在过去发表过数十个开发案例,这些案例主要用到哪些库呢?今天就来统计一下,顺便给大家整理及推荐常用的一些库。

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

统计代码:
  1. import os
  2. from collections import Counter
  3. modules = set()
  4. all_modules = {}
  5. for root, dirs, files in os.walk("..", topdown=False):
  6.     for name in files:
  7.         if name.endswith('.py'):
  8.             with open(root + os.path.sep + name) as f:
  9.                 for line in f:
  10.                     line = line.lstrip()
  11.                     if line.startswith('from') or line.startswith('import'):
  12.                         module = line.split()[1]
  13.                         module = module.split('.')[0]                        if module:
  14.                             modules.add(module)
  15.     if root.count(os.path.sep) <= 1:
  16.         for m in modules:
  17.             all_modules[m] = all_modules.get(m, 0) + 1
  18.         modules = set()
  19. 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,图形界面GUIsys - 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的编程教室

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 19:52 , Processed in 0.022327 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部