您好,欢迎收听 Python Bytes,我们将直接为您带来 Python 新闻和头条新闻。这是第 426 集,录制于 2021 年 3 月 31 日。我是 Michael Kennedy。我是 Brian Ocken。本期节目由 Posit Connect Cloud 赞助播出。上次,Brian 向大家介绍了 Posit Connect On-Prem,或者您自己的云。我们将讨论 Posit Connect Cloud,一个很酷的兄弟产品,我想。
如果您是社交媒体用户,您可以在社交媒体平台上找到我们。您可以在 Mastodon 和 Blue Skies 上找到我们,这是我们经常出没的两个主要地方。这些链接位于播客播放器节目说明的顶部。还有 YouTube,请在 YouTube 上关注我们。顶部有一个直播链接,可以带您到那里。如果您想成为节目的参与者,请订阅。这种情况会发生。
通常,现在,mod 7,每周,太平洋时间上午 10 点。时区变化,例如夏令时,会让一些人有点混乱。但无论如何,这就是时间。Brian,我们要进入夏天了。我不知道我们会保持多长时间的一致性,但我们最近做得还不错,对吧?是的。我认为是的。但我们是人。如果需要,我们会切换。是的。
没错。如果您想要一份手工制作的电子邮件形式的摘要,我们会发送大量节目说明中甚至没有的信息。Brian 每周都会把它发送给我们所有人,包括我。我很感激,Brian。太棒了。你知道我还欣赏什么吗?什么?我们的听众。当我们说一些事情时,他们会说,我知道你不知道某件事,但有几件事。是的。这是拥有播客的好处之一。就像上周一样,
你提到了,你在谈论什么?你在谈论……我在谈论……Black and Docs。是的。哦,不,不。是 Black and Docs。它格式化了各种 Markdown 代码块。是的。我提到过,格式化 Markdown 文件中的代码块很酷。但我有点想要一个 Markdown 本身的自动格式化程序。是的。
而我们的一位听众 Matthias 联系了我们,说:“嘿,你们看过吗?嗯,让我们看看。你们看过 MD format 吗?”所以,嗯,
MD format,所以我这个周末查看了它。MD format 实际上非常酷。我有点爱上它了。它就像任何其他 RR 格式一样,你可以,它是用 Python 编写的。我不一定需要它用 Python 编写,但它很整洁。所以你可以查看它,看看它是如何实现的,它是开源的。
但是,安装后,您可以在文件上运行 MD format。您可以运行它,您可以为它提供文件名。您可以为它提供一个目录,它会重新格式化您的 Markdown。这正是我想要的。但是您必须同意它的样式,因为它是有主见的。并且有一个警告说,嘿,我们会更改它。因此,如果您真的喜欢我们现在使用的样式,您可能需要固定它。
这是一个好主意。样式,我最想要的一件事是 Markdown 的下划线标题,例如,您可以在下一行上写一个标题,然后在下一行上写三个等号或更多或三个破折号,这意味着标题或副标题,我从不使用它。我只使用井号。只有动物使用三个下划线。是的。
好吧,我以前……我在开玩笑。请不要写信给我。我在开玩笑。不,我经常使用三条线作为水平线。我也一样。是的,我也一样。谢谢。无论如何,所以它会将其切换到我喜欢的标题样式。项目符号列表,这很酷。它们在破折号和星号之间交替,因为两者都有效。但是,如果您有嵌入式列表,它会交替。所以它看起来很好看。
嗯,我的意思是,输出无论如何都是一样的,但它使它看起来很好看。然后,嗯,有序列表有标准化。但是,这一个让我绊倒了。我想,我明白了。所以他们对有序列表所做的是,如果您有 1、2 和 3,嗯,它会将它们全部转换为 1。
这看起来很奇怪,而且有一个原因。原因是它减少了 git diff 的数量,或者当您更改版本时,如果您移动某些内容,唯一会发生 diff 的是您添加的内容或您删除的内容,而不是所有编号的更改。
这很好。但是,我喜欢能够,它一开始的可读性较差。所以有一个标志。您可以传递它,传递它 --number。它不会那样做。它只是连续编号它们,这实际上也很好,因为如果您移动某些内容,
不必遍历并重新键入所有这些数字,您可以只使用 number 进行空格式。那么为什么要写 1、4、7、2、3、5、6 呢,
是的。好吧,我的意思是,你做过。我敢肯定,就像你正在移动东西,现在它们错了。所以我对此感到兴奋。如果我使用的是纯文本编辑器,我可能会写一个点、一个点、一个点。因此,您可以重新排序它。但是,如果您使用的是理解 Markdown 的工具,当您按 Enter 键时,它会像 Typeora 和 Alphamore 一样递增。
IA Writers 和其他。对。所以它会自动为您编号。如果您想重新排序它,那么它就坏了。所以这真的很好。我喜欢它。是的。然后,当然,因为它是一个命令行工具,可能已经为提交编写了一个钩子,例如预提交钩子,但您可以轻松地自己编写一个,或者只是使用它,或者使用它,将其放入 CI 中。是的。
所以,嗯,所以我喜欢,这已经足够了,而且我,我将立即使用它,但这并没有就此结束。您还可以标记,您可以转换您的代码。所以,嗯,它会处理,嗯,
自动格式化您的代码块,为此它有一个插件系统,因为它不知道您想要如何格式化它,所以有一个用于 black 的插件,一个用于 ruff 的插件以及许多其他您可以……所以有一个 web 插件,所以您可以像……格式化您的 javascript 或 css 或 html 在您的……所以这很酷,您可以拥有所有这些不同的插件来……
转换您的代码块。无论如何,我有点爱上它了。我非常喜欢它。这非常好。你能回到这个东西的主页吗?我想在这里指出一些有趣的事情。好的。是的,到顶部。所以它说,这是安装方法。pipx install MD format。您可以轻松地使用 uv tool install MD format,对吧,Ryan?是的。
但是请看 inject,那个 inject,pipx inject,MD format,MD format --GFM,我猜是 GitHub Markdown 格式。inject 是做什么的?是的,我想,那是什么?所以当我们说话的时候,我做了一些研究,
它所做的是它会向同一个虚拟环境添加额外的包,即 PipX 为该工具创建的专用虚拟环境。所以 PipX 将为 MD format 创建一个工具,然后还安装这些其他东西。现在,我们多次谈到了 uv,我们也会稍后再谈到它。但据我所知,它没有这样的功能。您必须创建一个虚拟环境,然后安装它。嗯。
您也许能够使用 run --with 并创建一个非常复杂的长命令,但没有干净的命令。那么怎么样呢?PipX 小胜一筹,这通常不是我们所说的。我喜欢 PipX,但这通常不是我们所说的。是的,不。酷。
好的。好的。接下来是 pre-commit uv。我告诉过你我们会再谈到它。它来了。所以尽管它没有描述,但它在 GitHub 存储库中,我可能可以使用它。这个想法是……
要将 uv 的优势带入 pre-commit 并获取 pre-commit 钩子。所以 pre-commit 是 Anthony Satili 的一个项目,其想法是它是一个多语言运行器,碰巧是用 Python 编写的,但它不是关于
关于 Python 本身,它将运行 pre-commit 钩子。因此,与其说,好吧,您想使用用 Rust 编写的 pre-commit 钩子,您必须安装和管理 Rust 以及所有这些。你只是有点像按照它的方式去做。你只是预提交它,对吧?是的。所以它使用 pip,并且具有 pip 的所有优点,但也具有缺点。
所以您可以 pipx install pre-commit,然后我们又回到了这里,pipx inject pre-commit-uv。然后,当它执行其安装和设置新机器的 pre-commit 钩子或更新它或任何其他操作时,它将使用 uv,并且他们做了一个……
哦,向上看一会儿。有 uv 版本,uv tool install pre-commit with。这就像 inject。是的,我认为这会做到。我认为这是您可能能够实现它的方式。但我认为……
你知道,也许这会做到。我以为你只能用 run 做到,但如果你可以用 install 做到,那么,就是这样。这就是 uv 的方式。太棒了。好的,我们正在学习东西,但他们正在运行一个定时示例,运行一件事,然后另一件事说运行
我尝试了 pre-commit install hooks。我不知道钩子是什么,但有一些钩子集,用原始 pre-commit 安装它们,然后 pre-commit uv install hooks。这里的区别在于,使用常规 pre-commit,它花费了 54 秒左右。使用 pre-commit uv,它花费了 41 秒。但是,这是第一次。
您在涉及这些依赖项的机器上执行此操作,对吧?如果您再次点击它,例如如果 pre-commit uv 必须从源代码构建某些内容,它将再次被超级缓存,对吧?是的。所以我认为,好吧,它确实说了 10 次运行。有趣。但我认为它是在使用隔离的环境或类似的东西。无论如何。
如果您已经在使用 uv 并使用 pre-commit 钩子,请查看它。您可以使用环境变量等传递一些配置选项。不错。安装后,它将开箱即用地使用 uv。但是,您可以禁用它,然后要求您使用它,我认为是 dash 命令,pre-commit,pre-dash-commit-UV。就是这样。酷。酷,酷。你知道吗?在我们继续之前,我
我想告诉大家关于我们赞助商的事情。所以让我告诉大家关于 Posit 和 Posit Connect Cloud。所以本期节目由 Posit 的朋友们赞助播出。他们最初以构建 RStudio 和 Shiny 而闻名,并且他们为 Python 社区创建了许多工具。例如,Shiny for Python。我邀请 Joe Chung 来谈论这个。
以及大量用于 Team Python 的基础设施。所以我想告诉大家关于 Posit Connect Clouds 的信息。
Cloud,这是一个很酷的云托管,他们管理它,它管理您的数据科学平台。因此,它简化了数据应用程序和文档的部署。它可能是作为数据科学家共享您的 Python 内容的最简单方法。所以您只需三个步骤,即可将您的代码放入公共或私有存储库中。然后,如果它是
私有的,您可以授予它对您的私有存储库的访问权限,例如。它是公开的。显然,不用担心。然后您基本上将 Posit Connect Cloud 指向该存储库,然后单击部署。就是这样。它开始运行了,它将克隆您的代码存储库,构建您的资产,并将其托管在一个您可以共享的在线 URL 上。最棒的是,它会更新您的应用程序。
持续交付风格。因此,如果您将新内容推送到您已告知其发布的分支,它会说,啊,您的数据科学内容有新版本了。让我更新您与公司人员或研究人员共享的云端版本,或者您是如何共享它的。任何 GitHub 用户都可以创建一个免费的 Posit Connect 云帐户。因此,您不必进行试用或任何类似操作。您可以免费使用它并试用它。如果您需要快速更新,
轻量级的方式来共享您的数据科学内容,请尝试 Posit Connect Cloud。正如 Brian 上周告诉您的那样,如果您需要这些功能,但需要它们是私有的,那么您可以尝试内部部署版本 Posit Connect。如果您在一个快速发展至关重要的数据科学团队工作,那么您应该为自己和您的组织检查 Posit Connect Cloud。访问 pythonbytes.fm/connect-cloud。看看它是否适合您。它是 pythonbytes.fm/connect-cloud。链接位于您的播客播放器节目说明中,或者
就在顶部,感谢 Deposit 支持 Python Bytes。是的,非常感谢。谢谢。所以现在我想谈谈几个 PEP。所以这些都是非常快速的话题,但 PEP 有一些变化。所以 PEP 5,7……不,我弄错了。
PEP 758 允许在没有括号的情况下使用 except 和 except* 表达式。截至 3 月 14 日,这已被接受。所以在这里查看,我有点……
我想我只是,我并没有过多考虑它,但是如果您,如果您有一个 try except 块,并且 except 可以接受很多,例如您不应该只使用没有内容的 except。您应该使用 except 来接受哪些类型的异常。没错。您应该在那里传递它。try except pass 是最好的方法。try pass。试试看。跳过 except。
无论如何,所以如果通常现在,如果您有几个允许的异常,您会将它们放在括号中。现在,这只是一个小的语言更改,它说您实际上不必在那里放置括号,或者将来您不会放置括号。
我完全赞成这一点。这看起来很棒。这似乎是一个简单的决定,我相信这就是它被接受的原因之一。它被接受的原因之一是,在未来的 Python 3.14 及更高版本中,您将不需要括号。就是这样。很好。所以,但是,你知道,所以像四年后,如果……我们可以开始使用这个。
因为你会,你知道,一旦你停止支持所有低于 3.x 的 Python 版本,对于包维护者来说,这是未来的新闻,对于普通人来说,这是今年的新闻。无论如何。是的。
嗯,另一个尚未被接受的 pep。它以草案形式存在,我只是想强调它,因为我认为这是一个好主意,那就是 pep 781,使类型检查成为内置常量。
而这个,围绕这个的想法是,我注意到当我更多地使用类型时,偶尔我需要,例如如果您要导入某些内容,例如如果我只是导入某些内容以便我可以导入类型,以便我可以放入某些内容的类型,你知道,一个类的类型或一个函数语句中返回值的类型或任何其他内容,一个变量类型,
我并不真正需要运行时的导入。我只需要它进行类型检查,因为这是为了获取类型。所以有这个,但是它确实导致了一些,嗯,但是如果您这样做,导入,例如,嗯,无论如何都在运行。所以,但是您总是必须说,例如,你知道,从 typing 导入类型检查什么来判断您是否正在进行类型检查。
它基本上只是说我们,我们不再需要这样做。所以不是,哦,规范在哪里?是的。所以我们将像,只是让它成为一个常量。无论如何。是的,这很好。作为内置函数的一部分,对吧?您不必导入它。您可以像使用 print 一样使用它。是的。
是的。是的。像 _Dunder type checking 之类的东西。所以是的。无论如何,我喜欢它。我认为我们应该拥有它。这将是好的。哦,虽然,虽然我在这里,但我还想强调的是,我四处查看。我想,还有什么?这里有一个按类别索引的 pepstoppython.org。它实际上非常好。这是一个关于如何导航 pep 的非常精心制作的网页。因为有很多 pep,对吧?
所以我想,好吧,我目前正在寻找已被接受的那些。所以您可以向下弹出并说已接受的 pep。然后您可以查看版本号,它们是哪个版本,它们是哪个版本以及其他内容。所以非常好,做得很好,易于导航的网站。干得好。非常好。无论如何,这就是关于这个的全部内容。我想知道这是否以结构化数据的方式可用。是否有像,
表示某些数据的 JSON 或其他内容。有一个 API,但我不知道它是否适用于此。我相信有人会告诉我们。是的。在那个桌子上使用 9 点 chat GPT 并让它做到。是的,JSON 元数据。确实如此。好的。我的最后一项,Siri。对不起,任何人的手机都开始了吗?我只是这样发音的,S-E-R-I-E。我想这应该是一样的。对不起。
所以这是对于更喜欢终端的人,但需要更好的 Git 体验的人。所以它是在您的终端中丰富的 Git 提交图。这里有一张小图片。
打开图像并放大查看,我想。但基本上,它为您提供了整个分支树以及您可以四处导航和交互的内容,有点像 Rich,并允许您执行诸如搜索所有分支上的提交日志以及浏览标签等各种操作。Brian,你怎么看?我喜欢这个。
我的意思是,你能立即尝试一下吗?是的,我知道。这看起来太酷了。它看起来真的很酷。我完全想开始,好吧,这很酷。现在,它是用 Rust 编写的,所以它不是 Python 东西。它是一个用于 Python 人员的工具。尽管我觉得我们与 Rust 人员之间有一定的亲缘关系。它不是真的……
用 Python 编写的,但这并不重要,因为您只需键入命令,您就可以更好地理解您的 Python 和其他代码,对吧?是的。所以,是的,关于它没有更多可说的了。您可以使用 Homebrew 安装它。您可以通过 Cargo 安装它。其他方法,您甚至可以从源代码构建它。但是,是的,它是一个非常简单的工具,但它非常好。我必须检查一下。请在 Windows 上可用。
因为那是我真正需要的地方。是的,为了工作,对吧?是的。我想是的。我的意思是,Rust 是相当跨平台的。Rust 和手指。记住在 Windows Terminal 中尝试它。不要在 cmd.exe 中尝试。不要碰运气。Windows Terminal?是的,它更漂亮。PowerShell?是的。
PowerShell 是运行它的 shell,但 Windows Terminal 是托管它的应用程序,它具有更好的兼容性。例如,Rich 在 Windows Terminal 中比在 CMD 中工作得更好等等。从 Microsoft 应用商店获取它
应用商店。我怎么现在才知道这个?它真的很好。它是真实的。您可以执行下拉操作并说,在此 PowerShell 选项卡中运行此操作,在此选项卡中运行此操作并从此选项卡中返回。我不知道你称之为 DOS 的是什么,无论那是什么。我会报告回来,因为我花了我的整个职业生涯假装我不在工作中使用 Windows 机器,但是是的。是的。是的。你甚至可以,我认为可以打开一个特定的选项卡作为 Windows,
Windows 子系统用于 Linux 和 Voodoo 类型交易。所以很酷。不错。离题。额外内容。如果您有额外内容,我们现在进入额外内容。我今天没有额外内容。好吧,你很幸运我有。
哦,在我们开始之前,Will,我刚刚发布了一个关于高性能算法的 TalkPython 集,用于高性能终端应用程序的算法,我们谈论了很多这个,他说 Windows Terminal 将成为未来 Windows 版本的默认终端。对于终端用户来说是美好的时光,对于 Will 来说,是终端框架构建者,2E 构建者。我想知道您是否需要 Windows Terminal 的 term colors。无论如何,好的。我不知道。
我不知道,但让我们看看我还有一些额外的时间。好的,不是图片。所以我写了一篇博客文章。我只是要链接到我正在使用的地方,但我写了一篇名为“Sunset Search”的博客文章。Brian,我过去经常使用搜索。我已经谈到了 Kagi 以及我多么喜欢 Kagi 以及所有这些事情,对吧?几年前。我可能每月在那里进行几千次搜索。是的。我上个月查看了 Microsoft。
我使用的三台电脑以及每台电脑上的多个浏览器、我的手机和平板电脑,我进行了 211 次搜索。怎么样?你可能做得更多,但好的。Kaggy 会跟踪你的帐户,因为他们会根据它向你收费。哦,好的。所以我查看了我的 Kaggy 统计数据,说你做了 211 次。为什么它在下降?因为我最近一直在使用 AI 来回答很多这些问题。
以及许多使用 pro chat GPT 等内容,它就像,我可以打开一堆选项卡并自己做一个研究项目,或者我可以,嘿,对这个进行一些深入的研究,然后带着你找到答案的参考资料回到我这里。
总结一下。无论如何,我认为这,我只是认为这真的很疯狂。所以我正在切换到一个名为 Startpage 的东西。你听说过 Startpage 吗?是的,我过去几个月一直在使用它。我喜欢它。你喜欢吗?是的,它没有,我会听起来像个,像个老头子或什么。我喜欢它只给我搜索结果,而不是在顶部给我 AI 结果。是的,是的,是的。它真的很好。我
我非常喜欢它。您可以去,您甚至不必拥有帐户。您可以基本上将其设置为不显示其所有广告内容。我不知道。我一直在摆弄这个。但我认为它很棒。它基本上是私有的。保护隐私不会将您的信息传递给 Google,但它基本上是 Google 索引。有些地方说不要显示广告。是外观,常规吗?我不知道。这里某个地方。它说不要显示所有营销信息。
但是如果您在那里进行搜索,它会对您的 Google 搜索进行某种程度的去中介化,我想。它有像私下访问一样的小访问,对吧?您可以说,如果您进行某种搜索,例如我如何离开这里?让我们回到这里。如果我搜索像 Python 播客这样的内容,它会让你在一个小型的 VM iframe 中运行它,甚至不会让它知道你来自哪里。这很有趣,这个东西。
我认为这很有趣。所以它使用的是 Google 索引。是的。它为自身提供资金的方式是它也有广告。是的。但是,请注意,我的脑海中没有广告,因为我运行的是广告拦截器,它会删除它们。所以它更好。看,我运行的是有广告的,它对我来说并不烦人。我想,我可以接受。是的,这很好。但因为他们没有跟踪它,所以他们没有跟踪东西。所以是的,我主要讨厌跟踪和重新定位以及所有这些。是的。是的。
所以是的。哦,好。关于这一点,我感到好奇的一件事是,我知道 Google,这是一个离题,但我了解 Google 最近几年使他们的搜索变得更糟,我不知道,所以人们必须浏览更多页面。所以他们会看到更多广告。太糟糕了。嗯,
我想知道 StartPage 是否使用了被篡改的索引。可能。但它没有那么多……
立即,就像没有那么多答案一样。如果您在 Google 上直接搜索,您会得到,这里有一堆视频,这里有一堆我们找到的 Q&A 内容。就像,那是它的一半。然后你得到了广告,那是它的三分之一。然后在底部某个地方,你会得到一点点东西来开始。我没有看到任何那些东西。是的。或者只是顶部的 AI 答案。我认为,嗯,
很多这样的行为正在扼杀大量的广告收入,而这些收入原本应该属于那些真正撰写有趣内容的人。我明白,没错。Kaggy 对是否将 AI 答案放在顶部采取了一种非常有趣的方法。那就是,如果你在 Kaggy 上的搜索以问号结尾,它就会提供一个 AI 答案。
如果相同的搜索没有问号结尾,则不会显示答案。很有趣。是的,我相信 Startpage 确实有类似的答案功能,但你必须启用它或进行其他操作。我不确定。我觉得我见过,但无论如何,由于我不怎么使用搜索,我想,好吧,让我四处搜索看看还能找到什么。是的,Startpage。你也在使用它,这很有趣。是的。嗯,是的,我认为它被我启用了。我以为我没有找到它。我认为 Vivaldi 启用了它,或者类似的东西,但我不知道。很有趣。好的。是的,我是粉丝,但好吧。酷。是的。酷。呃,
最后一点额外内容,Rhett Turnball(他曾在 Talk Python 上讨论过使用 Python 构建 Mac 应用)给我们发来了信息,所以他知道一些关于构建框架之类的东西。他说,记住我说过,Brian,你可以直接使用 uv-tool install rough,然后你就可以直接使用 rough,而无需将其放入你的 requirements 文件或 uv-lock 或其他任何地方。他说,好建议。但是,你可能需要将其实际放入你的虚拟环境中。这样,它就成为你固定数据库的一部分
依赖项,这样那些为你的项目做贡献的人就可以使用相同版本的 rough,如果他们还没有这个确切的版本,你就不会因为 rough 本身或规则默认值发生变化而导致获取更改出现反复。是的。是的,我完全同意。而这正是我们在讨论 Python 工具以及所有面向每个人的内容时遇到的有趣之处之一,那就是针对独立开发人员的建议与针对团队工作的建议不同。是的。
即使是开源团队。是的,没错。没错。好吧,我们讲个笑话吧?当然。让我看看我今天做得怎么样。这个笑话,当我写这个笑话的时候,我想到了你,Brian,因为我认为这完全是关于 C 开发人员,甚至是 C# 或 C++ 开发人员的。我相信还有许多其他语言也有这种情况,但 C 语言尤其让我想到这一点。这与一个精灵和一个软件开发人员类似的人有关,他
偶然发现了一个金色的精灵形状的小花瓶或任何东西,然后像你一样摩擦它,精灵就出来了。他说,我将满足你三个愿望。好的。但在你之前,精灵打断了。规则是你不能许愿死亡或生命,也不能让人们坠入爱河。而且你不能许愿更多愿望。这通常是逃生门。你有三个愿望。比如第一个愿望,我希望有一百万个愿望。现在开始吧。好的。
不行。不能许愿更多。那么我可以许愿更少的愿望吗?你为什么要许愿更少的愿望?我认为这个卡通片里有个错误,所以我打算修复它。我希望拥有负一个愿望。好的。满足你。你还有 4,295,967,295 个愿望。
堆栈下溢。是的,他们是用无符号整数存储它的。是的,我认为你是对的。它有一个错误,因为卡通片中有零,而零对于任何数字系统都应该是有效的。是的,它应该是,但负一。是的。
然后,如果你在下面的线程中再往下看一点,你会看到很多很好的评论。几乎没有人注意到它需要是负数。比如下溢,比如零不会导致下溢。但有人指出,帽子指出,你需要升级 64 位精灵。有一种类似动画的疯狂游戏,闪电击中它。那是 64 位版本。这很有趣。但如果你让它下溢,它只会给你更多愿望。
是的,你还记得你第一次听到的时候吗,你可能不记得了,我也不记得了,但在早期学习这些,比如神灯故事的时候,我被震惊了,因为,第一,那不像我家里任何一个灯。你为什么要擦灯?这似乎很奇怪。为什么有人会这样做?是的。
我想这来自一个你有很多空闲时间的时候。好吧,不。是的。好吧,它也是一个油灯。它们看起来不一样。而且,它可能是黄铜的。而现在我是一个古董商,是的。你必须擦亮它或做些什么,对吧?是的。是的,没错。我不知道我是否拥有任何黄铜的东西。我的房子里有很多垃圾,但我不知道它们中是否有任何是黄铜的。但谁知道呢?真的吗?是的。
无论如何,我认为这是一个很好的笑话。你觉得呢?很好。我喜欢。是的。是的。作为一个 C 程序员,你必须赞同。除了那个错误。除了那个错误。除了那个错误。他们没有测试它。不,他们当然没有测试它。我们下周一定会以某种方式回到这个问题。是的。好吧,谢谢你,Brian。感谢大家收听。我们下次再见。