关于“Python”的核心知识点整理大全50

目录

python_repos.py

17.1.6 概述最受欢迎的仓库

python_repos.py

17.1.7 监视 API 的速率限制

注意

17.2 使用 Pygal 可视化仓库

python_repos.py

17.2.1 改进 Pygal 图表

python_repos.py

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


 

GitHub的API返回有关每个仓库的大量信息:repo_dict包含68个键(见)。通过仔细查看 这些键,可大致知道可提取有关项目的哪些信息(要准确地获悉API将返回哪些信息,要么阅读 文档,要么像此处这样使用代码来查看这些信息)。 下面来提取repo_dict中与一些键相关联的值:

python_repos.py

--snip--
# 研究有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# 研究第一个仓库
repo_dict = repo_dicts[0]
print("\nSelected information about first repository:")
1 print('Name:', repo_dict['name'])
2 print('Owner:', repo_dict['owner']['login'])
3 print('Stars:', repo_dict['stargazers_count'])
print('Repository:', repo_dict['html_url'])
4 print('Created:', repo_dict['created_at'])
5 print('Updated:', repo_dict['updated_at'])
print('Description:', repo_dict['description'])

在这里,我们打印了表示第一个仓库的字典中与很多键相关联的值。在1处,我们打印了项 目的名称。项目所有者是用一个字典表示的,因此在2处,我们使用键owner来访问表示所有者 的字典,再使用键key来获取所有者的登录名。在3处,我们打印项目获得了多少个星的评级, 以及项目在GitHub仓库的URL。接下来,我们显示项目的创建时间(见4)和最后一次更新的时 间(见5)。最后,我们打印仓库的描述。输出类似于下面这样:

Status code: 200
Total repositories: 713065
Repositories returned: 30
Selected information about first repository:
Name: httpie
Owner: jkbrzt
Stars: 16101
Repository: https://github.com/jkbrzt/httpie
Created: 2012-02-25T12:39:13Z
Updated: 2015-07-13T14:56:41Z
Description: CLI HTTP client; user-friendly cURL replacement featuring intuitive UI, JSON support,
syntax highlighting, wget-like downloads, extensions, etc. 

从上述输出可知,编写本书时,GitHub上星级最高的Python项目为HTTPie,其所有者为用户 jkbrzt,有16 000多个GitHub用户给这个项目加星。我们可以看到这个项目的仓库的URL,其创建 时间为2012年2月,且最近更新了。最后,描述指出HTTPie用于帮助从终端执行HTTP调用(CLI 是命令行界面的缩写)。

17.1.6 概述最受欢迎的仓库

对这些数据进行可视化时,我们需要涵盖多个仓库。下面就来编写一个循环,打印API调用 返回的每个仓库的特定信息,以便能够在可视化中包含所有这些信息:

python_repos.py
--snip--
# 研究有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
1 print("\nSelected information about each repository:")
2 for repo_dict in repo_dicts:print('\nName:', repo_dict['name'])print('Owner:', repo_dict['owner']['login'])print('Stars:', repo_dict['stargazers_count'])print('Repository:', repo_dict['html_url'])print('Description:', repo_dict['description']) 

在1处,我们打印了一条说明性消息。在2处,我们遍历repo_dicts中的所有字典。在这个 循环中,我们打印每个项目的名称、所有者、星级、在GitHub上的URL以及描述:

Status code: 200
Total repositories: 713067
Repositories returned: 30
Selected information about each repository:
Name: httpie
Owner: jkbrzt
Stars: 16101
Repository: https://github.com/jkbrzt/httpie
Description: CLI HTTP client; user-friendly cURL replacement featuring intuitive UI, JSON support,
syntax highlighting, wget-like downloads, extensions, etc.
Name: django
Owner: django
Stars: 15028
Repository: https://github.com/django/django
Description: The Web framework for perfectionists with deadlines.
--snip--
Name: powerline
Owner: powerline
Stars: 4315
Repository: https://github.com/powerline/powerline
Description: Powerline is a statusline plugin for vim, and provides statuslines and prompts for several
other applications, including zsh, bash, tmux, IPython, Awesome and Qtile. 

上述输出中有一些有趣的项目,可能值得再看一眼。但不要在这上面花费太多时间,因为我 们即将创建的可视化可让你更容易地看清结果。

17.1.7 监视 API 的速率限制

大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制。要获悉你是否接近了GitHub的限制,请在浏览器中输入https://api.github.com/rate_limit,你将看到类似于下面的响应:

{"resources": {"core": {"limit": 60,"remaining": 58,"reset": 1426082320},
1 "search": {
2 "limit": 10,
3 "remaining": 8,
4 "reset": 1426078803}},"rate": {"limit": 60,"remaining": 58,"reset": 1426082320}
} 

我们关心的信息是搜索API的速率限制(见1)。从2处可知,极限为每分钟10个请求,而在 当前这一分钟内,我们还可执行8个请求(见3)。reset值指的是配额将重置的Unix时间或新纪 元时间(1970年1月1日午夜后多少秒)(见4)。用完配额后,你将收到一条简单的响应,由此知 道已到达API极限。到达极限后,你必须等待配额重置。


注意

很多API都要求你注册获得API密钥后才能执行API调用。编写本书时,GitHub没有这样 的要求,但获得API密钥后,配额将高得多。


17.2 使用 Pygal 可视化仓库

有了一些有趣的数据后,我们来进行可视化,呈现GitHub上Python项目的受欢迎程度。我们 将创建一个交互式条形图:条形的高度表示项目获得了多少颗星。单击条形将带你进入项目在 GitHub上的主页。下面是首次尝试这样做:

python_repos.py
import requests
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
# 执行API调用并存储响应
URL = 'https://api.github.com/search/repositories?q=language:python&sort=star'
r = requests.get(URL)
print("Status code:", r.status_code) 
# 将API响应存储在一个变量中
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# 研究有关仓库的信息
repo_dicts = response_dict['items']
1 names, stars = [], []
for repo_dict in repo_dicts:
2 names.append(repo_dict['name'])
stars.append(repo_dict['stargazers_count'])
# 可视化
3 my_style = LS('#333366', base_style=LCS)
4 chart = pygal.Bar(style=my_style, x_label_rotation=45, show_legend=False)
chart.title = 'Most-Starred Python Projects on GitHub'
chart.x_labels = names
5 chart.add('', stars)
chart.render_to_file('python_repos.svg') 

我们首先导入了pygal以及要应用于图表的Pygal样式。接下来,打印API调用响应的状态以 及找到的仓库总数,以便获悉API调用是否出现了问题。我们不再打印返回的有关项目的信息, 因为将通过可视化来呈现这些信息。

在1处,我们创建了两个空列表,用于存储将包含在图表中的信息。我们需要每个项目的名 称,用于给条形加上标签,我们还需要知道项目获得了多少个星,用于确定条形的高度。在循环 中,我们将项目的名称和获得的星数附加到这些列表的末尾2。

接下来,我们使用LightenStyle类(别名LS)定义了一种样式,并将其基色设置为深蓝色(见 3)。我们还传递了实参base_style,以使用LightColorizedStyle类(别名LCS)。然后,我们使用 Bar()创建一个简单的条形图,并向它传递了my_style(见4)。我们还传递了另外两个样式实参: 让标签绕x轴旋转45度(x_label_rotation=45),并隐藏了图例(show_legend=False),因为我们 只在图表中绘制一个数据系列。接下来,我们给图表指定了标题,并将属性x_labels设置为列表 names。

由于我们不需要给这个数据系列添加标签,因此在5处添加数据时,将标签设置成了空字符 串。生成的图表如图17-1所示。从中可知,前几个项目的受欢迎程度比其他项目高得多,但所有 这些项目在Python生态系统中都很重要。

17.2.1 改进 Pygal 图表

下面来改进这个图表的样式。我们将进行多个方面的定制,因此先来稍微调整代码的结构, 创建一个配置对象,在其中包含要传递给Bar()的所有定制:

python_repos.py
--snip--
# 可视化
my_style = LS('#333366', base_style=LCS)
1 my_config = pygal.Config()
2 my_config.x_label_rotation = 45
my_config.show_legend = False
3 my_config.title_font_size = 24
my_config.label_font_size = 14
my_config.major_label_font_size = 18
4 my_config.truncate_label = 15
5 my_config.show_y_guides = False
6 my_config.width = 1000
7 chart = pygal.Bar(my_config, style=my_style)
chart.title = 'Most-Starred Python Projects on GitHub'
chart.x_labels = names
chart.add('', stars)
chart.render_to_file('python_repos.svg')

在1处,我们创建了一个Pygal类Config的实例,并将其命名为my_config。通过修改my_config 的属性,可定制图表的外观。在2处,我们设置了两个属性——x_label_rotation和show_legend, 它们原来是在创建Bar实例时以关键字实参的方式传递的。在3处,我们设置了图表标题、副标 签和主标签的字体大小。在这个图表中,副标签是x轴上的项目名以及y轴上的大部分数字。主标 签是y轴上为5000整数倍的刻度;这些标签应更大,以与副标签区分开来。在4处,我们使用 truncate_label将较长的项目名缩短为15个字符(如果你将鼠标指向屏幕上被截短的项目名,将 显示完整的项目名)。接下来,我们将show_y_guides设置为False,以隐藏图表中的水平线(见5)。 最后,在处设置了自定义宽度,让图表更充分地利用浏览器中的可用空间。

在7处创建Bar实例时,我们将my_config作为第一个实参,从而通过一个实参传递了所有的 配置设置。我们可以通过my_config做任意数量的样式和配置修改,而7处的代码行将保持不变。 图17-2显示了重新设置样式后的图表。


 



关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抽象类和接口的区别

抽象类和接口的区别: 抽象类(Abstract Class): 抽象类是一种不能被实例化的类,它只能被用作其他类的父类(基类)。抽象类可以包含抽象方法和非抽象方法。抽象方法是没有具体实现的方法&#xf…

2020年认证杯SPSSPRO杯数学建模B题(第二阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现: 以广播的方式来进行无线网通信,必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题,在同一个时间段内,只有唯一一个拿到令牌…

医院信息系统集成平台—数据交换层

医院集成平台核心是数据交换总线,这解决当前大部分医院最关注的电子病历与移动医疗等业务系统接口交互共享及消息数据状态同步(消息一体化机制)等问题。集成平台主要包括业务数据集并提供相应的标准处理接口API(含数据采集与数据发布查询更新),同时提供相应的适配器服务来…

20240102使用python3将视频切片改名之后合并

20240102使用python3将视频切片改名之后合并 2024/1/2 22:12 缘起:将迅雷下载的视频切片排序之后再通过ffmpeg合并!https://pri-cdn-tx.xiaoeknow.com/app1cE7gLFM1187/confusion_index/1703599111EAPoRE.m3u8?signf17e1a2cc0ddd77801f3c5110116369e&am…

C++ //习题14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。

C程序设计 (第三版) 谭浩强 习题14.2 习题14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。 代…

Qt:自定义一个好看的等待提示Ui控件

一、2024 永不卡顿 爱的魔力它转圈圈~ 等待样式控件是我们在做UI时出场率还挺高的控件之一,通常情况下有如下的几种实现方式: 1> 获取一张gif的资源图,然后使用QMovie 在一个QLabel 控件上加载显示gif的waiting等待动态。 2> 自定义绘图…

Linux 进程(五) 调度与切换

概念准备 当一个进程放在cpu上运行时,是必须要把进程的代码跑完才会进行下一个进程吗?答案肯定是 不对。现在的操作系统都是基于时间片轮转执行的。 时间片(timeslice)又称为“量子(quantum)”或“处理器片…

计算机网络【Cookie和session机制】

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Sess…

【Pytorch】学习记录分享11——PyTorch GAN对抗生成网络

PyTorch GAN对抗生成网络 0. 工程实现1. GAN对抗生成网络结构2. GAN 构造损失函数(LOSS)3. GAN对抗生成网络LOSS损失函数说明 0. 工程实现 1. GAN对抗生成网络结构 2. GAN 构造损失函数(LOSS) LOSS公式与含义: LOSS…

javascript 常见工具函数(四)

31.RGB值和十六进制值之间的转换: (1)十六进制的颜色转为 RGB格式: /*16进制颜色转为RGB格式*/String.prototype.colorRgb function () {var sColor this.toLowerCase();if (sColor && reg.test(sColor)) {if (sColor.l…

C++初阶——类与对象

目录 C宏函数 在使用宏函数时,有几个常见的错误需要注意: 宏函数在某些情况下有以下优势: 1.C宏函数 在 C 中,宏函数(Macro Function)是使用预处理器定义的宏(Macro)&#xff0…

初识Linux下进程

🌎初识进程 初识进程 简单认识一下进程 如何管理进程 进程属性信息 内核运行队列 查看进程 通过系统调用获取进程标识符       父子进程       查看运行中的进程 总结 前言: 我们在电脑上点开的一个个应用,其实就是一个个进程&am…

初识Java并发,一问读懂Java并发知识文集(4)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

智能标志桩:防盗防外物入侵_图像监测_态势感知_深圳鼎信

智能标志桩是一种新型的智能化标志设备,主要用于标识地下管道的位置、类型等,起警示作用。这与传统的标志桩大不相同,物联网的高速发展赋予了智能标志桩科技的力量,使它可以连接互联网,还具备图像监控的功能&#xff0…

2024年P气瓶充装证考试题库及P气瓶充装试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证考试题库及P气瓶充装试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机出的P气…

C++Qt6 多种排序算法的比较 数据结构课程设计 | JorbanS

一、 问题描述 在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式排列的算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法(例如搜索算法与合…

Linux系统操作常用指令

打开终端: ctrlshiftt:切换标签 ctrlshiftn:新增窗口 Linux命令大全(超详细版)_第二范式的博客-CSDN博客 VMware运行时以管理员身份运行,可以避免许多问题。 输入法切换 ctrl 空格 放大终端:ctrlshift"" 缩小终端:ctrl“…

【深度学习-基础学习】Transformer 笔记

本篇文章学习总结 李宏毅 2021 Spring 课程中关于 Transformer 相关的内容。课程链接以及PPT:李宏毅Spring2021ML这篇Blog需要Self-Attention为前置知识。 Transfomer 简介 Transfomer 架构主要是用来解决 Seq2Seq 问题的,也就是 Sequence to Sequence…

web前端——clear可以清除浮动产生的影响

clear可以解决高度塌陷的问题&#xff0c;产生的副作用要小 未使用clear之前 <!DOCTYPE html> <head><meta charset"UTF-8"><title>高度塌陷相关学习</title><style>div{font-size:50px;}.box1{width:200px;height:200px;backg…

【已解决】打印PDF文件,如何跳过不需要的页面?

打印PDF文件的时候&#xff0c;有时候我们只需要打印其中的几页&#xff0c;并不需要全部打印&#xff0c;那如何在打印时跳过那些不需要的页面呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 如果你是通过网页打开PDF文件&#xff0c;那么可以在页面中找到并点击“打…