- 您好,欢迎收听 Python Bytes,我们将直接为您带来 Python 新闻和头条新闻。这是第 429 集,录制于 2025 年 4 月 21 日。我是 Brian Ockin。
我是 Michael Kennedy。本期节目由 Posit Workbench 的朋友们赞助。感谢 Posit。当然,稍后您也可以在节目中听到他们的声音。如果您想与我们联系,请通过 Blue Sky 或 Mastodon 联系我们。我们在节目说明中提供了所有这些链接。我们很乐意听到您的声音,也很乐意听到您认为我们可能想讨论的新主题。
想要涵盖的内容。如果您想现场收听我们的节目,请访问 pythonbytes.fm/live,通常是太平洋时间星期一上午 10 点。但您也可以使用此链接找到 YouTube 频道来观看之前的剧集。最后,您在收听时无需记下任何内容,因为我们会
我们会直接发送给您。因此,请访问 pythonbytes.fm,加入邮件列表或新闻通讯列表,您每周都会收到一封包含所有链接的电子邮件。但它也包含备份信息,例如,您需要了解才能理解故事的信息。所以真的
非常好。我们不会将其用于垃圾邮件发送或任何类似的事情。Michael,你有什么要告诉我们的吗?我可能有一个问题。我也很喜欢自己托管东西,这意味着我最终会处理一些事情,而不是仅仅在某个地方登录。但我还是要推荐一下。因此,如果您发现自己正在使用 Slack、TikTok、
我认为甚至可能是 Zoom。如果您正在使用 Jira,如果您正在使用 Notion,并且您希望所有这些都在一个地方,而不是一堆不同的应用程序,您可以免费、开源、自托管或付费托管(如果您真的想这样做),有一个项目或工具或平台,无论如何,它被称为 Huly(H-U-L-Y),这是一个开源平台,可以作为 Linear、Jira、Slack 和 Notion 的多合一替代品。这有多酷?
好的。好的。所以也许您想要一个地方进行聊天对话,或者您想存储您的文档,或者您想进行项目管理并将其与您的 GitHub 问题同步,或者进行规划。所以所有这些东西都很酷,我认为,甚至还有视频会议。因此,如果您还想摆脱 Microsoft Teams 或 Zoom 或其他任何东西,它会为您提供一个不错的私人空间
来做所有这些,对吧?我不知道。它只是,这真的引起了我的共鸣,就像,这是一个很酷的开源的东西,我们可以做,我们可以运行它,我们不必拥有所有这些不同的服务。而我不知道其他情况。老实说,我不知道 Jira 的价格。我从未为 Jira 付费过,但 Slack 却贵得离谱。就像 Slack 的价格对于您从中获得的东西来说太贵了,诸如此类。
因此,拥有这个以及一堆仪表板,它甚至还有一个不错的自托管选项。因此,如果您是使用 Docker compose 的人,猜猜看?您只需 Docker compose up -d,您的整个平台就开始运行了,我认为这非常出色。所以,
这就是许多这些自托管的东西是如何共享和维护的。因此,您甚至不必弄清楚如何将其放入 Docker。它已经存在并已设置好。因此,您只需运行它即可。请确保您进行了备份。非常整洁,我认为。这很酷。是的。它还可以与 GitHub 双向同步。因此,如果您有 GitHub 问题,它将与这些问题同步。如果您有 GitHub 项目,它将与这些项目同步。所以它是……
项目管理工具及其问题管理(例如其 JRO 替代功能)都镜像在 GitHub 上。因此,并非每个人都必须使用它。例如,您可以让内部人员使用它,而外部人员则将其视为 GitHub。我有 GitHub 问题。我前几天刚和我的治疗师谈过这个。
是的,确实如此。John other 说,这就是我喜欢这个播客的原因。感谢您对 holy 的推荐,并且喜欢健康,呃,像我一样喜欢自托管。太棒了。谢谢,John。是的。神圣的自托管蝙蝠侠。无论如何。
神圣的自托管。确实,是的。问题是您最终可能会遇到,好吧,现在我有 12 个应用程序需要备份和维护。但是能够说我们不必担心数据隐私,我们不必担心共享内容,或者这些地方是否被黑客入侵,或者他们是否改变了他们的商业模式,或者他们是否倒闭,这确实很酷。你知道,你有一个你可以分叉并运行的自托管开源的东西。这其中有一些很酷的东西。
我想知道是否有人有,因为这听起来很棒,但我真的不想做这项工作。所以我想知道是否有一种自托管即服务。我认为实际上确实有。我现在忘记了它的名字。但是,是的,基本上存在自托管即服务。是的,太棒了。这是一个多么有趣的想法。好吧,这就是这个的全部内容。轮到你了。好的。好吧,我要谈谈关键……哦,那些又叫什么来着?CVE?常见……
我应该练习一下这个常见的漏洞和披露。所以 CVE,当出现大规模攻击时,我们习惯于谈论这些,但它们一直都在发生,就像漏洞问题一样。这在上周相当紧急地出现了,因为 CVE 系统,整个系统都是建立在一个……
一个名为 MITRE 的非营利组织之上,以及整个系统,但与美国政府签订了一份合同来维护这个 CVE 数据库。然而,这已经存在了 25 年,由于我们目前可爱的政府正在进行的所有削减成本的工作,它面临着可能消失的风险。
这是浪费。我说,瑞安,这是政府浪费。许多参与其中的人都是志愿者。这简直是疯了。无论如何,因此,一个 25 年历史的 CVE 计划面临着消失的风险。MITRE 的副总裁发出了一封信,
通知了可能停止运营的情况。显然,他们已经为此担心了一段时间了。因此,为了解决这个问题并可能确保我们将来不会面临这种风险,
现在有一个 CVE 基金会。因此,呃,截至 4 月 16 日,已经正式宣布,CVE 基金会已正式成立,以确保 CVE 计划的长期生存能力、稳定性和独立性,呃,
这真的很酷。这不是他们突然做的事情。他们已经考虑了一段时间并进行了规划。在 thecvefoundation.org 上有一个公告,他们将发布有关过渡、其结构、过渡规划以及稍后参与机会的信息。但现在只有一个公告。
但这太疯狂了,我们可能会冒着失去它的风险。这就是我们谈论漏洞的方式。
但显然还有一个公告,我找不到它的链接,说他们没有失去资金。所以现在没事了,但这仍然是“现在”的部分。因此,该基金会希望确保它不仅仅是“现在”。我仍然认为我们应该将其作为政府资助,但你知道,我想就是这样吧。我认为我们应该资助它。但我也觉得也许这更像是……
像 Python 或 Mozilla 基金会一样,或者你知道,它与美国政府相关,而不是仅仅是一个真正致力于追踪安全问题的国际组织。追踪这些事情并不需要大量的资金。你知道我的意思吗?是的。我不知道这方面的工作量是多少,但是。是的。我不知道工作量是多少,但这不像有很多服务器基础设施。它不像运行 AI 农场之类的东西,你知道吗?
是的,资金可能应该来自所有受益于此的 ISP 和大公司等。我也这么认为,但是,我不反对美国政府。我很高兴他们这样做,但这确实让它在当今的处境变得很奇怪。
是的。Python 不久前成为 CVE 权威机构,PSF 也是如此,因此他们可以在 Python 领域宣布他们自己的 CVE,而无需通过扩展。
外部,而不是说服其他参与者允许他们列出他们的 Python CVE 等等。因此,它现在具有一定的分布式特性。在我们开始感谢我们的赞助商 Ryan 之前,我想说的是 Elestio(E-L-E-S-T-I-O)。它说完全托管的 DevOps 或您的云和开源软件。是的。
我还没有使用过它。这不是推荐,但我们,也就是他们,将开源软件部署和管理到您选择的云提供商。因此,你知道,创建一个 Hetzner 服务器,将其指向它,然后选择您想要的各种自托管内容,他们将在那里为您自托管它们。我相信这就是它的工作方式。太棒了。自托管即服务。谁知道?谁知道?好吧,我想你知道。但我们也有……
我们也有 Posit 做了一些非常棒的事情。你为什么不告诉他们呢?Python Bytes 的这部分内容由 Posit 的朋友们为您带来。Posit 最近一直在对 Python 社区进行巨额投资。最初以 RStudio 而闻名,他们一直在为 Team Python 建立一套工具和服务。您是否想过 Python 数据科学项目中涉及的所有内容?您肯定需要您的笔记本或 IDE,但您还需要一个服务器或云环境来运行它,一个 Python 版本。包
包,访问您的数据库和内部 API。这需要很多设置。如果您在几个月后返回项目时更改了这些内容中的任何一项,您可能会得到不同的结果。如果所有这些都可以在一个易于访问的地方为您设置好,无论何时您想完成工作,那岂不是很好吗?这就是 Posit Workbench 的目标。Posit Workbench 允许数据科学家在其首选开发环境中使用 Python 进行编码,而无需对 IT 施加任何额外压力。
它使数据科学家能够访问他们喜欢的所有开发环境,包括 JupyterNobix、JupyterLab、Positron 和 VS Code,但它有助于确保可重复性。以下是它的工作原理。您或您的团队在组织内的强大专用服务器上或在
与托管您最重要数据源(例如 AWS、SageMaker、Azure、GCP、Kubernetes 或几乎任何地方)相同的云服务上设置 Posit Workbench。
在那里,您可以创建专用预配置环境来在笔记本中运行您的代码。重要的是,您还可以配置对专有数据库和内部 API 的访问。当需要让新的数据科学家加入或启动新项目时,您只需在 Workbench 中启动它,它就会完全配置好并可以使用,包括基础设施方面的内容。
所有这些都由您的组织安全地管理。如果您在一个一致性至关重要的数据科学团队工作,那么您应该为您的组织和您自己检查 Posit Workbench。今天访问 pythonbytes.fm/workbench,获得三个月的免费试用,看看它是否适合您。网址是 pythonbytes.fm/workbench。该链接位于您的播客播放器节目说明中。感谢 Posit 对 Python Bytes 的支持。
确实如此。好的。你准备好下一个了吗?是的。数据库。数据库方面的事情。所以这里有一个非常有趣的免费网络应用程序,我想它是,它允许您绘制、导入、导出和可视化数据库图表。所以,无论您有自己的项目,还是我认为这非常有用的地方是,您被分配到一个新项目,或者您是一名顾问,他们说,欢迎。你好。
两周时间,这是数据库,这是应用程序,请在现在之前修复它。你会说,我该如何开始?这里有什么?对吧?所以这个名为 drawdb.app 的东西允许您绘制、复制和粘贴数据库图表。如果您去那里,您可以看到非常漂亮的图形,并且 UI 非常适合与之交互。所以它说您可以免费自己尝试一下。有趣的是,它要求您选择您的数据库。
就像 SQLite 或 Postgres 或 SQL Server 或其他任何东西一样,因为它导入和导出 SQL 语句。而不同的数据库有不同的数据库 SQL 方言,这本身就令人讨厌。但假设我想,我不知道,我会选择 Postgres,对吧?您来到这里,您可以添加一个小表,然后您可以编辑该内容,为其提供一个列,多个列,不同的数据类型。
并创建一个第二个,然后您可以说,例如,从一个数据库或一个表中获取一列,然后将其拖放到另一个列的字段中,这将自动创建一个外键关系,例如。您可以转到那里,然后说文件,导出 SQL,或从 SQL 导入。这将生成数据定义语言 DDL 内容,
创建脚本并创建索引和列。或者,如果您有数据库,您可以导出它,然后根据数据库中的内容加载此图表,然后对其进行可视化、调整、保存或只是尝试理解它。这真的很酷。是的。据我所知,它是免费的。我不知道。也许在某个时候我会为此付费,但我认为不会。无论如何,我认为这是一个很棒的小应用程序,如果人们有想要可视化的数据库,他们应该查看一下。
而且你知道,我通常是从绘图开始的,比如在纸上绘图。那么为什么不在这样的东西中绘制呢?没错。因为然后您可以说,根据此生成我的表。是的。是的。这很酷。整洁。酷。所以没有更多内容了,但就是这样。
好的。嗯,我的最后一项是,我只会介绍其中的一部分,但它是 Edward Lee 的一篇博文,名为《14 个高级 Python 功能》。而且,嗯,你知道,这是一种列表文章之类的东西,但其中有很多高级 Python 功能,甚至谈论了一些实际上并不那么高级的功能。它们只是人们应该知道的东西。一些适合初学者但实际上并非如此的有趣的事情。嗯,我,我,
我有点,我有点喜欢这个,因为在这个列表中有一些东西,我真的很希望我早点学会。无论如何,我只会跳进去。我想挑选一些东西。首先是类型重载。这是我刚读这篇文章时学到的东西,我不知道你可以这样做。因此,在 typing 模块中,您可以说 from typing import overload,它是,
然后您可以做的一件事就是您可以基本上列出重载操作,函数调用的重载定义。它并不完全像完整的 op,就像,你知道,函数重载,我们没有见过之类的东西。然而,有
返回类型。假设这里有一个例子,如果您只传入,如果您传入某种类型,那么您将始终获得字符串列表。如果您传入不同的类型,那么您将始终获得
一个单一的字符串返回。这些类型对于键入或返回类型来说是很好的。而这是我们在 Python 中没有的东西。您不能只在返回类型中有所不同。因此,将它放在适当的位置是很好的。这很整洁。
我马上就要玩这个了。所以这很酷。使用 typing 重载函数。我必须尝试一下。接下来是我最近一直在大量使用的东西,即仅限关键字和仅限位置的参数。具体来说,所以我们现在有了这些星号,
或者一个斜杠,您可以用它来分隔函数的参数,参数定义。星号或星号表示之后的所有内容都是仅限关键字的参数。
然后斜杠是仅限位置的参数。然后一个是之前的,一个是之后的。因此,在他的示例中,他使用了 A、B,然后是斜杠、C、D、星号、E、F。这意味着 A 和 B 仅限位置。C 和 D 可以是位置或关键字。然后 E 和 F 必须是关键字。
仅限关键字。而我正在做的事情很多,这就是我为什么大量使用这个的原因,仅限关键字的一个原因是对于具有……的函数,而这些通常都不是 API 函数,而是函数,内部函数,它们有很多参数,呃,它们有默认值,而您几乎很少会传递它,像……一样传递它,呃,
仅限位置,因为默认值是顺序无关紧要的,它们都有默认值,而且有很多,所以我真的希望所有调用该函数的地方都列出它们定义了哪个变量或哪个参数,因为它们调用了该函数,您可以使用星号来做到这一点,超级……是的,这真的很酷,我认为对此非常有用的另一件事是,如果它经常会给出……
是真和假,您没有传递的变量,但您有一些常量。因为如果它变成 7、7、5、真、真、假,你会说,哇,哇,哇。什么?变量名不存在,例如 X、Y、Z,就像,哦,这些是维度。不,它只是 7、7、5。就像,嗯。
哪个是哪个,你知道我的意思吗?尤其是真、真、假、真,诸如此类。如果您强制对它使用关键字参数,那么在调用站点上它将更具可读性。像您只是添加内容一样的东西。顺序无关紧要。你知道,你的加法函数是 a 和 b 并不重要,但是你知道,对于真和假,你真的想知道,这些是什么意思?我喜欢这些。这是一个很好的补充。我想说的最后一件事是,有一个列表,嘿,
他说,第九个是 Python nitpicks,这实际上是几个主题,但它被列为 nitpick,因为它是一个令人沮丧的事情,当人们没有利用它时。因此,for else 语句,这,你知道,这,我认为可能仍然存在争议,也许有点争议,即您是否应该在 for 语句中使用 else 子句。是的,
而且有点,你知道,就像在 else 子句之前或不使用它之前一样,您可能必须说像一个 found 标志一样,说您在迭代 for 循环时是否真的找到了您要查找的项目。然后您可以稍后检查它,但是有 else,您可以说,你知道,如果,如果您没有找到,如果,如果您从未在……中命中任何内容,
for 循环,您可以 else 出来。但这仍然有点奇怪。我仍然觉得最好对它进行注释,说明 else 中发生了什么。您正在使用您在那里做的事情。所以,好的。我反对 else。我绝对反对 else。顺便说一句,Guido……
我曾经听到他引用过一句话,说如果让我重新来过,就不会有 else 语句了。我认为这很奇怪。就像,它是在中断时发生还是在不中断时发生?就像 break 是您要查找的东西,而 else 是另一个,还是 break 是某种奇怪的东西,它应该像……一样,我不知道。它只是,我知道您可以节省一行代码,但是它,
对我来说太模棱两可了。太奇怪了。所以 else 是如果您没有中断,对吧?我认为是这样。是的。无论如何。我认为是这样。无论如何,事实是您让我们,就像,我们必须进行这场讨论。就像,我不知道。这对我来说很奇怪。我不参与。我知道有,我可以做到,但我没有做。好的。还有 walrus 运算符,它自 3.8 和 3 开始就存在了,它已经被弃用或即将结束生命周期。所以我们可以开始使用,绝对可以使用 walrus 运算符。
同样,它只是节省了一行代码,但我喜欢它。海豹呢?我是海豹的粉丝。我相信我这个周末创建了 walrus 运算符。好的。对我来说,我喜欢它,因为它具有局部性定义。就像我正在为这个 if 块创建它,如果需要,我将在 if 块中使用它。否则,它有点像,你知道,它有点像它是这个东西的一部分,而不是以后可能在逻辑上说得通的东西。对我来说,我喜欢它。好的。是的。
还有几个。短路求值,我不太关心。实际上,如果这是您可以做的所有事情,我还可以使用一堆 if-else。但是短路,这意味着使用 or 来表示如果您要执行一件事或另一件事,您可以使用 or 短路。因此,一旦您遇到一个为真的内容,之后的内容将不会……
而且您可以为此疯狂地使用它,实际上可以在其中放入逻辑。而我真的很不喜欢在短路或操作中放入逻辑,但是
那只是我。但我确实喜欢运算符链接。我经常看到来自不同语言的人这样做。他们不知道您可以进行运算符链接。所以我将看到像 0 小于 X 且 X 小于 10 一样,您不必在 Python 中这样做。只需将它们放在一起并说 0 小于 X 小于 10。所以运算符链接是正确的。但我也认为我们应该对运算符链接更严格一些。而且我不认为它像……
您可以将任何内容放在那里,对吧,但我认为您不应该像数字一样,它应该小于,您不应该进行大于……运算符链接,这很奇怪,数字线从小到大,我认为是这样,请这样做,这就是我想说的全部内容,但是,这里还有很多其他很棒的东西,嗯,所以一定要查看这篇文章,这是完整的列表,所以 lru 缓存,喜欢它,是的,喜欢它,有
F 字符串。喜欢它。Nitpicks。我对该语句有一些 nitpicks。但你知道吗?没关系。在那里找到了好东西,Brian。好的。我们完成了主要主题,我没有额外的内容,Michael,但是你有什么额外的内容吗?好吧,我认为答案是否定的,但事实证明是肯定的。好的。因为我刚在之前听到的是……
哦,天哪,这个缩放非常奇怪。所以,记住我写过这篇文章,说对 Mozilla 或 Firefox 的一些非请求建议,说,你知道吗?你们正在做的事情并没有让你们走上正确的道路。以下是一些您可以尝试作为企业存在的五个想法
以后请这样做。所以他们实际上来了。我的意思是,我真的很怀疑他们是否在意我说的话,但他们正在推出这个……嗯,这个新的服务套件。怎么样?所以 Thunderbird,它似乎都是基于 Thunderbird,他们的电子邮件客户端和 Thundermail,这是一个非常有趣的术语,但他们提供的是像
Thunderbird Appointment,有点像 Calendly 或 TidyCal 或其他什么。Thunderbird Send 用于私有文件共享。我过去很喜欢 Firefox Send,但它被黑客和其他恶意行为滥用。然后它就停止工作了。但是您可以只放一个 URL,一个密码。整个文件在三天后就会消失。将其交给某人,然后他们就可以拥有它。这真的很棒。而且它是端到端加密的,所有这些东西。
还有一些 AI 方面的东西,因为当然,有 AI 方面的东西。然后是 Thunderbird Mail,托管的 Thunderbird Mail,所有这些。无论如何,我认为这是一个很酷的想法。Thunder Mail。Thunder。Thunderbird。哦。所以,非常酷。
这就是我的额外内容。你不能在没有 AI 的情况下拼写邮件。没错。好吧,我会告诉你,这似乎是他们在功能集中所认为的。我找到的每个邮件客户端都像,现在我们有一些糟糕的 AI 功能,如果尝试使用它,它只会删除所有格式并让您不得不重写邮件。但它在这里,而且很棒。不,不是。
无论如何,我们应该吗?你知道,Brian,我们尽量避免在这里谈论政治,但我有一个政治笑话。好的,太棒了。你准备好了吗?是的。所以这个笑话是很多人发给我们的。所以感谢所有发给我们这个笑话的人。你有没有注意到,我不怎么看新闻,但你有没有注意到最近有一些关于关税的讨论?是的。
我的意思是,我认为坦率地说,让我们讨论关税是公平的。如果其他国家对我们征收关税,我们不征收关税有意义吗?我不知道。随便吧。我认为可以进行一场辩论。但它的实施方式是如此地
混乱、随机、时断时续等等。但有人认为,如果这对全球贸易来说是个好主意,那么对Python和编程语言,特别是对这些讨厌的标准库外部包来说,那岂不是个很酷的主意?所以,我向您介绍Tariff,这是一个对Python导入语句征收关税的Python包。是的。
不,这不仅仅是个笑话。它确实是1.0版。甚至还没有到0.x版。它已在PyPI上发布。因此,您可以直接使用pip install tariff
它有什么作用?好吧,砰,火,拳头表情符号,火表情符号,一个小小的参考回到Signal,最棒、最棒的Python包,让导入再次伟大。Tariff是一个很棒的工具,可以让您对Python包征收导入关税。我们将通过提高外国进口的成本,将制造业带回您的代码库。所以,您只需导入它。您可以对不同的库设置您的税率
例如,对NumPy征收50%的关税,对Pandas征收200%的关税等等。然后,当您导入NumPy时,它实际上会慢50%。它比以前多花50%的时间。你怎么看?这会教训他们。是的。这会教训他们。是的。我们直接回到自托管的供应商那里。是的。但令人震惊的是它确实有效。你知道,这不仅仅是一个奇怪的笑话,而是有人做到了。它是开源的。是的。
还有帽子。帽子。帽子很好。你可能会问,为什么是关税?因为外国软件包窃取了我们的CPU周期太久了。是时候将美国放在首位,让进口再次公平公正了。显然是一个平价包。后果自负。
是的,其他人窃取了我们的CPU。我们需要窃取我们自己的CPU。就是这样做的。是的。好吧,这就是我给你的。它有趣吗?我不知道,但我认为它肯定很有趣。它不是。当我看着我的401k时,它一点也不好笑。你必须笑。你必须哭。这是你的两种反应之一。不妨笑一笑。我很高兴我喜欢我的工作,因为我会在这里待一段时间。无论如何。
呃,谢谢。感谢你的一切,迈克尔。感谢你的笑话。感谢所有分享笑话的人。嗯,就像我们说的,很多人,嗯,发来了这个,但这并不是浪费,这也给了我们一个信号,如果很多人都在考虑它,我们可能想报道它。所以,所以谢谢。是的,谢谢。好的,再见。再见,布莱恩。再见,各位。