关于“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博客

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

09、docker 安装nacos并配置mysql存储配置信息

docker 安装nacos并配置mysql存储配置信息 1、docker启动nacos的各种方式2、Docker安装nacos3、MySQL中新建nacos的数据库4、挂载数据or配置目录5、运行 1、docker启动nacos的各种方式 内嵌derby数据源 docker run -d \ -e PREFER_HOST_MODEhostname \ -e SPRING_DATASOURCE_…

python旅游大数据分析可视化大屏 游客分析+商家分析+舆情分析 计算机毕业设计(附源码)Flask框架✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 1.requests库 点关注,防走丢&am…

Linux vi/vim 教程

文章目录 【 1. vi/vim 的三种模式 】1.1 命令模式1.2 输入模式1.3 底线命令模式 【 2. 实例 】【 3. vim 的其他命令 】 所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。目前我们使用比较多的是 vim 编辑器。vim 从 vi 发展出来&am…

深度确定性策略梯度 DDPG

深度确定性策略梯度 DDPG 深度确定性策略梯度 DDPG模型结构目标函数算法步骤适合场景 深度确定性策略梯度 DDPG A2C、A3C 都是在线策略,在与环境交互时,样本参数更新效率低,所以主要是应用在离散空间,计算量没那么大。 DDPG 专用…

aps审核-模电英文稿

模拟电子线路 Analog circuit 需要熟悉课程名,一句话简单概括课程内容,准备一些重点内容介绍。 This course mainly introduces the properties(n.性质) of semiconductors(半导体) and transistors, and then analyzes and masters amplification circ…

算法专题四:前缀和

前缀和 一.一维前缀和(模板):1.思路一:暴力解法2.思路二:前缀和思路 二. 二维前缀和(模板):1.思路一:构造前缀和数组 三.寻找数组的中心下标:1.思路一:前缀和 四.除自身以外数组的乘积&#xff…

java企业人事信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业人事信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发,数据库为M…

DeepSpeed: 大模型训练框架

背景: 目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这…

PE解释器之PE文件结构

PE文件是由许许多多的结构体组成的,程序在运行时就会通过这些结构快速定位到PE文件的各种资源,其结构大致如图所示,从上到下依次是Dos头、Nt头、节表、节区和调试信息(可选)。其中Dos头、Nt头和节表在本文中统称为PE文件头(因为SizeOfHeaders…

Nacos设置账号密码

1、控制台设置 # 开启账号密码验证 nacos.core.auth.enabledtrue# 设置账号密码 nacos.core.auth.usernamenacos nacos.core.auth.passwordnacos1232、数据库设置 密码为:nacos,对应加密信息是: $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2k…

文件分割合并助手

二进制文件合并分割器 时间: 2024.01.03 作者: FlameCyclone 自己写的一个能方便分割合并文件的小工具 使用说明 输出文件名 输出文件名规则前缀文件名开始固定名称序号(10/16进制显示, 宽度以输出最大序号为准)分割范围(16进制显示, 宽度以输出最大范围为准)CRC32校验码…

go语言``反引号用法归纳——多行输出和Tag标签(指定json名称、MySQL名称))

一、多行输出 示例 func main() {str1 : 反引号多行字符串str2 : "双引号" " 多行" " 字符串"//str3 : 单引号" //" 多行" //" 字符串str4 : "双引号\n" " 多行\n" &quo…

xadmin-plus

python之Xadmin-plus是什么? xadmin-plus: xadmin的django3.2版本支持。 Xadmin是一个非常优秀的Django Admin插件,可惜的是已经停止更新。Xadmin-plus对其进行了升级兼容。支持python3.10、Django3.2。 特性 Django Admin直接替换基于Twitter Boots…

Ubuntu22.04安装VTK8.2

1. 安装ccmake 和 VTK 的依赖项: sudo apt-get install cmake-curses-gui sudo apt-get install freeglut3-dev2.下载VTK-8.2.0库 VTK官方网址 自己选择合适的版本进行下载,解压到VTK文件夹下,再新建文件下名为build 3. 配置VTK 进入buil…

BIM 助力世界上最长的双层桥

Bentley 应用程序助力节省时间和成本,提前三年实现了投资回报 连通复杂的高速公路 PT. Wijaya Karya (WIKA) 是一家印度尼西亚的公司,为土建施工行业提供施工、机械和电气服务,该公司承包了印度尼西亚雅加达北部海港路二期工程的设计和建造&…

算法:岛屿的周长

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、规律总结 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述 给定一个包含 0 和 1 的二维网格地图&#x…

Elasticsearch:如何使用 Elasticsearch 进行排序

虽然你在唱这首歌时可能会想象圣诞老人,但欧洲民间传说,尤其是阿尔卑斯地区的民间传说,有两个传奇人物圣尼古拉斯和坎普斯。 象征着慷慨和善良的圣尼古拉斯,在 12 月 6 日 为乖巧的孩子们带来礼物和欢乐! 相比之下&…

【算法挨揍日记】day45——474. 一和零、879. 盈利计划

474. 一和零 474. 一和零 题目描述: 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 解…

鸿蒙开发入门

一、开发准备 1.1 开发环境搭建 鸿蒙开发文档华为账号注册DevEco Studio 下载 二、快速入门 三、ArkUI 3.1 Image 3.2 Text 3.3 TextInput 3.4 Button 3.5 循环控制 3.6 List 3.7 自定义 3.8 状态管理 3.8.1 State 装饰器 3.8.2 Prop、Link 装饰器 // 父组件 State str: …