资讯专栏INFORMATION COLUMN

我常用到的python库

Yangyang / 1001人阅读

摘要:的一大特色是其丰富的模块,基本上只要你能想到的常见开发需求,都能找到别人已经实现的库直接使用,或者相关的工具框架来辅助实现。我们编程教室在过去发表过数十个开发案例,这些案例主要用到哪些库呢今天就来统计一下,顺便给大家整理及推荐常用的一些库。

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 结尾的代码文件

对代码文件中的每一行,判断是否以 fromimport 开头,是的话,就把它后面的模块名记下来

为了避免有的项目中重复导入一个模块影响数据,对于同一个项目子目录下,我们用 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的编程教室

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43226.html

相关文章

  • 让前端攻城师独立于后端进行开发: Mock.js

    摘要:一是什么目前的大部分公司的项目都是采用的前后端分离后端接口的开发和前端人员是同时进行的那么这个时候就会存在一个问题在页面需要使用大量数据进行渲染生成前后端开发人员的接口也许并没有写完作为前端的我们也就没有办法获取数据所以前端工程师就需要自己 showImg(https://segmentfault.com/img/remote/1460000013022563); 一.Mock.js是...

    Fundebug 评论0 收藏0
  • Python3 CookBook | 数据结构和算法(二)

    摘要:以下测试代码全部基于查找最大或最小的个元素工作中有时会遇到这样的需求,取出数据中前面的值,或者最后的值。大家如果对堆数据结构感兴趣的话,可以继续进行深入研究,由于我了解的并不深,也没办法再展开了。 文章首发于知乎专栏,欢迎关注。https://zhuanlan.zhihu.com/py... 以下测试代码全部基于 Python3 1、查找最大或最小的 N 个元素 工作中有时会遇到这样的...

    geekidentity 评论0 收藏0
  • Goutte基本用法

    摘要:基本用法最近工作上用到爬虫框架号称是上最好用的爬虫框架。这里记下自己用到过的使用技巧,免得下次使用的时候再摸索。 Goutte基本用法 最近工作上用到PHP爬虫框架Goutte(号称是PHP上最好用的爬虫框架)。这里记下自己用到过的使用技巧,免得下次使用的时候再摸索。 table相关 html: 国内高匿代理IP 更多 国家 代...

    supernavy 评论0 收藏0
  • Goutte基本用法

    摘要:基本用法最近工作上用到爬虫框架号称是上最好用的爬虫框架。这里记下自己用到过的使用技巧,免得下次使用的时候再摸索。 Goutte基本用法 最近工作上用到PHP爬虫框架Goutte(号称是PHP上最好用的爬虫框架)。这里记下自己用到过的使用技巧,免得下次使用的时候再摸索。 table相关 html: 国内高匿代理IP 更多 国家 代...

    ?xiaoxiao, 评论0 收藏0
  • 50 个加速包都抢不到车票,还不如这个 Python 抢票神器

    摘要:但今年各种抢票软件的横行,还有官方出的加速包,导致连黄牛都不敢保证能买到票。今天我就给大家介绍一个开源的抢票程序,亲测有效我身边已经有很多好友,通过这个程序抢到车票了。这个库是用来在上同步校准当地时间的。 showImg(https://segmentfault.com/img/remote/1460000017814865); 阅读文本大概需要 6.6 分钟。 又到了一年一度的抢票大...

    qianfeng 评论0 收藏0

发表评论

0条评论

Yangyang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<