关于“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.hqwc.cn/news/316592.html

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

相关文章

2 Windows网络编程

1 基础概念 1.1 socket概念 Socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。Socket本质上是一个抽象层,它是一组用于网络通信的API,包括了一系列…

放弃努力必然下滑的2024

知道和做到,这其中有一道鸿沟。 努力不一定会成功,但是不努力连成功的概率都不会有。 问题 之前有朋友看过我的一些博文,问:"我如果不坚持写,仅靠存量能否维持一段时间?" "我如果不坚持写&#xff0c…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档: https://kafka.apache.org/documentation/#security 在官方文档中,kafka有五种加密认证方式,分别如下: SSL:用于测试环境SASL/GSSAPI (Kerberos) :使用kerberos认证,密码是…

ElasticSearch自定义算分排序(Function Score Query)

使用 function score query,可以修改文档的相关性算分 (query score),根据新得到的算分排序。 目录 Function Score Query 案例 Function Score Query 几种默认的计算分值的函数: Weight:为每一个文档设置一个简单而不被规范化的权重Fie…

运维工程师的出路到底在哪里?

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,贝叶斯滤波与Kalman估计、多传感器信息融合,机器学习,人工智能&#xff0c…

ORACLE Primavera P6, Unifier v23.12 系统分享

引言 根据上周的计划,我近日简单制作了一个基于ORACLE Primavera P6 EPPM 以及Unifier 最新版23.12的虚拟机演示环境,里面包括了p6 和 unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机,请您…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…

新全国产迅为龙芯 3A6000 处理器板卡

11月28日,“2023龙芯产品发布暨用户大会”在北京举行,迅为作为龙芯重要合作伙伴受邀参加,在整机产品发布仪式上,展示了基于龙芯 3A6000 处理器的全国产安全型工控计算机。 龙芯 3A6000 处理器完全自主设计、性能优异,代…

强烈推荐一个Python库!制作Web Gui也太简单了!

前言 之前小编用Python做GUI界面,首选就是Tkinter、PyQt5 。但是它们实现起来工作量及代码量太大,还要一步步设计调试界面排版等问题,而且界面最终呈现也不是特别美观,还有就是打包后太大等一系列问题。 最近公司同事刚好有个相…

uniapp中uview组件丰富的Code 验证码输入框的使用方法

目录 基本使用 #自定义提示语 #保持倒计时 API #Props #Methods #Event 基本使用 通过ref获取组件对象,再执行后面的操作,见下方示例。 通过seconds设置需要倒计的秒数(默认60)通过ref调用组件内部的start方法,开始倒计时通过监听cha…

GitHub Copilot 最佳免费平替:阿里通义灵码

之前分享了不少关于 GitHub Copilot 的文章,不少粉丝都评论让我试试阿里的通义灵码,这让我对通义灵码有了不少的兴趣。 今天,阿七就带大家了解一下阿里的通义灵码,我们按照之前 GitHub Copilot 的顺序分享通义灵码在相同场景下的…

Linux系统文件IO

Linux系统文件IO 每个系统都有自己的专属函数,我们习惯称其为系统函数。系统函数并不是内核函数,因为内核函数是不允许用户使用的,系统函数就充当了二者之间的桥梁,这样用户就可以间接的完成某些内核操作了。 在前面介绍了文件描…