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

news2024/11/22 11:33:32

目录

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.coloradmin.cn/o/1343937.html

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

相关文章

SAP问题 OPEN SQL 取不到值

关键:数据库中有数据,但是open sql取不到数据 背景: 标准程序在测试环境正常执行,在生产环境报错。 解决过程: 第一步:分析执行结果不一致可能的原因: 1.测试数据问题,可能性小&…

openGauss学习笔记-178 openGauss 数据库运维-逻辑复制-逻辑解码-使用SQL函数接口进行逻辑解码

文章目录 openGauss学习笔记-178 openGauss 数据库运维-逻辑复制-逻辑解码-使用SQL函数接口进行逻辑解码178.1 前提条件178.2 操作步骤 openGauss学习笔记-178 openGauss 数据库运维-逻辑复制-逻辑解码-使用SQL函数接口进行逻辑解码 openGauss可以通过调用SQL函数,…

传奇私服教程,新手小白速速下载!

传奇私服教程,新手小白速速下载! 第二十课-封玩家账号登陆-封玩家机器码登陆.zip 第十九课-快速搭建FTP服务器教程配套工具.zip 第十八课-绿盟GOM1108引擎登陆器配置防劫持列表教... 第十七课-最新访问网站自动弹出加群教程.zip 修复沙城捐献不了或者捐献…

Mybatis行为配置之Ⅳ—日志

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

Python FastApi连接oracle进行查询

这边技术选型是cx_oracle进行连接查询,cx_oracle的使用首先要有官方的客户端才能连接到数据库,python并不自带客户端。我用是Python3.9 安装客户端 可以到官网在选择最新版进行下载。 Instant Client for Microsoft Windows (x64) 64-bit 或者直接从我…

uniapp多级动态表单规则

最近有个新的业务、主要涉及多层级的动态表单提交,其中又涉及很多类型,踩了很多坑之后,终于研发完毕。 传来的数据格式处理 传来的数据格式涉及比较多的内容,以下举例一个,涉及到规则的填写 规则写法有两种&#xff…

【Maven】下载及配置

文章目录 1. 下载2. 解压3. 配置环境变量4. 验证 Maven 是一个跨平台的项目管理工具。作为 Apache 组织的一个颇为成功的开源项目,其主要服务于基于 Java 平台的项目创建,依赖管理和项目信息管理,是一个自动化构建工具,本文将介绍…

Activemq存储KahaDb详解

引言 ActiveMQ在不提供持久化的情况下,数据保存在内存中,一旦应用崩溃或者重启之后,数据都将会丢失,这显然在大部分情况下是我们所不希望的。对此ActiveMQ提供了两种持久化方式以供选择。 kahaDB kahaDB是一个基于文件&#xf…

为什么ChatGPT采用SSE协议而不是Websocket?

在探索ChatGPT的使用过程中,我们发现GPT采用了流式数据返回的方式。理论上,这种情况可以通过全双工通信协议实现持久化连接,或者依赖于基于EventStream的事件流。然而,ChatGPT选择了后者,也就是本文即将深入探讨的SSE&…

聚簇索引和非聚簇索引的区别

在 MySQL 中,B 树的实现主要是通过 InnoDB 存储引擎来实现的。InnoDB 存储引擎中的索引主要有聚簇索引和非聚簇索引两种类型,聚簇索引是根据主键创建的索引,⽽非聚簇索引是根据⾮主键列创建的索引。 对于非聚簇索引,MySQL 中会同时…

神经网络 —— 模拟人脑的计算方式

神经网络能够反映人类大脑的行为,允许计算机程序识别模式,以及解决人工智能、机器学习和深度学习领域的常见问题。 人类发明的灵感来源有很多都是来自大自然,神经网络同样如此。人工神经网络是一种类似于人类神经网络的信息处理技术。但事实上…

【Linux系统化学习】进程终止的奥秘

个人主页点击直达:小白不是程序媛 Linux专栏:Liunx系统化学习 代码仓库:Gitee 目录 获取函数返回值 退出码 进程退出的场景 错误码 信号终止异常代码 进程的终止 main函数直接return exit函数 _exit函数 获取函数返回值 在C语言学…

如何像高级软件工程师一样使用vscode做开发

以一个真实的代码库为例,带您了解高级软件工程的关键原则是什么,以及如何充分利用vscode提供的各种特性来提高开发效率。您可以将学到的技巧和思想应用于任何项目。 视频地址: 如何像高级软件工程师一样使用vscode做开发 欢迎关注公众号&a…

ViT的极简pytorch实现及其即插即用

先放一张ViT的网络图 可以看到是把图像分割成小块,像NLP的句子那样按顺序进入transformer,经过MLP后,输出类别。每个小块是16x16,进入Linear Projection of Flattened Patches, 在每个的开头加上cls token和位置信息,…

云原生|对象存储|minio分布式集群的搭建和初步使用(可用于生产)

前言: minio作为轻量级的对象存储服务安装还是比较简单的,但分布式集群可以大大提高存储的安全性,可靠性。分布式集群是在单实例的基础上扩展而来的 minio的分布式集群有如下要求: 所有运行分布式 MinIO 的节点需要具有相同的访…

【Java 进阶篇】Redis 缓存优化:提升应用性能的不二选择

在现代的软件开发中,性能一直是开发者们追求的目标之一。对于数据库访问频繁、数据读取较慢的场景,使用缓存是提升性能的有效手段之一。而 Redis 作为一款高性能的内存数据库,被广泛用作缓存工具。本文将围绕 Redis 缓存优化进行详解&#xf…

《深入理解JAVA虚拟机笔记》并发与线程安全原理

除了增加高速缓存之外,为了使处理器内部的运算单元能尽量被充分利用,处理器可能对输入代码进行乱序执行(Out-Of-Order Execution)优化。处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果一致&#…

三台CentOS7.6虚拟机搭建Hadoop完全分布式集群(三)

这个是笔者大学时期的大数据课程使用三台CentOS7.6虚拟机搭建完全分布式集群的案例,已成功搭建完全分布式集群,并测试跑实例。 9 安装hbase 温馨提示:安装hbase先在master主节点上配置,然后远程复制到slave01或slave02 &#xf…

远程网络唤醒家庭主机(openwrt设置)

远程网络唤醒家庭主机(openwrt设置) 前提: 1.配置好主板bios的网络唤醒功能(网络教程自己百度一下找) 2.电脑开启网络唤醒功能(网络教程自己百度一下找) 3.路由器通过ddns实现域名和动态IP绑定内网穿透方法汇总_不修改光猫进行内网穿透-C…

【办公软件】Excel双坐标轴图表

在工作中整理测试数据,往往需要一个图表展示两个差异较大的指标。比如共有三个数据,其中两个是要进行对比的温度值,另一个指标是两个温度的差值,这个差值可能很小。 举个实际的例子:数据如下所示,NTC检测温…