<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on Guixian 的日常记录</title><link>https://blog.chenguixian.com/categories/python/</link><description>Recent content in Python on Guixian 的日常记录</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 04 Aug 2025 10:12:24 +0800</lastBuildDate><atom:link href="https://blog.chenguixian.com/categories/python/index.xml" rel="self" type="application/rss+xml"/><item><title>空行在代码中的重要性</title><link>https://blog.chenguixian.com/post/python/how-whitespace-improves-code-quality/</link><pubDate>Mon, 04 Aug 2025 10:12:24 +0800</pubDate><guid>https://blog.chenguixian.com/post/python/how-whitespace-improves-code-quality/</guid><description>&lt;p>空行在代码开发中非常重要，日常代码复核中发现经常遇到一些代码堆在一起的情况，十分影响代码的可读性。代码不仅要让机器跑得通，更要让人类读得懂。&lt;/p>
&lt;p>下面举一些 Python 的例子进行说明：&lt;/p></description></item><item><title>Python设计模式</title><link>https://blog.chenguixian.com/post/python/python%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</link><pubDate>Mon, 24 Apr 2023 19:10:47 +0800</pubDate><guid>https://blog.chenguixian.com/post/python/python%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/</guid><description>&lt;p>设计模式从大的分类上可以分为 &lt;strong>创建型设计模式、结构型设计模式、行为模式&lt;/strong>。&lt;/p>
&lt;p>Python是一门动态到骨子里的编程语言，它有着一等函数对象、“鸭子类型”、可自定义的数据模型等各种灵活特性。因此，我们极少会用Python来一比一还原经典设计模式，而几乎总是会为每种设计模式找到更适合Python的表现形式。&lt;/p></description></item><item><title>Python EAFP LBYL 编程风格</title><link>https://blog.chenguixian.com/post/python/python-eafp-lbyl-code-styles/</link><pubDate>Wed, 18 Jan 2023 16:03:25 +0800</pubDate><guid>https://blog.chenguixian.com/post/python/python-eafp-lbyl-code-styles/</guid><description>&lt;p>本文介绍两种编程风格 EAFP and LBYL。&lt;/p>
&lt;p>EAFP：Easier to Ask for Forgiveness than Permission，请求宽恕比获得许可更容易。首先尝试执行你想做的任何操作，然后使用一个尝试块来捕获你的操作可能抛出的最终异常，以防它不成功。&lt;/p></description></item><item><title>Python 工匠读书笔记 5：异常和错误处理</title><link>https://blog.chenguixian.com/post/python/python-craftman-exception/</link><pubDate>Fri, 18 Nov 2022 18:08:22 +0800</pubDate><guid>https://blog.chenguixian.com/post/python/python-craftman-exception/</guid><description>&lt;p>[toc]&lt;/p>
&lt;h2 id="基础知识">基础知识&lt;/h2>
&lt;h3 id="优先使用异常捕获">优先使用异常捕获&lt;/h3>
&lt;h4 id="一个简单函数">一个简单函数&lt;/h4>
&lt;p>写一个简单的函数，它接收一个整数参数，返回对它加1后的结果。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">incr_by_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;对输入整数加1，返回新的值
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> :param value: 整型，或者可以转成整型的字符串
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> :return: 整型结果
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">isinstance&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">value&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="nb">isinstance&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">value&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdigit&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Unable to perform incr for value: &amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#34;&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">incr_by_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;对输入整数加1，返回新的值
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> :param value: 整型，或者可以转成整型的字符串
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> :return: 整型结果
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ne">TypeError&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="ne">ValueError&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Unable to perform incr for value: &amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#34;, error: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="两种编程风格">两种编程风格&lt;/h4>
&lt;ul>
&lt;li>LBLY（look befor you leap） 三思而后行&lt;/li>
&lt;li>EAFP（easier to ask for forgiveness than permission） 获取原谅比许可简单&lt;/li>
&lt;/ul>
&lt;h4 id="小结">小结&lt;/h4>
&lt;ol>
&lt;li>Python 社区偏于使用基于异常捕获的 EAFP 风格&lt;/li>
&lt;li>代码更为精简，不需要开发者用分支完全覆盖各种可能出错的情况，只需要捕获可能发生的异常即可&lt;/li>
&lt;li>EAFP 的代码通常性能更好 如果是 &amp;lsquo;73&amp;rsquo; LBLY 每次调用都需要进行额外的 isinstance 和 isdigit 的判断。EAFP 每次调用直接进行转换，返回结果&lt;/li>
&lt;li>Python 的抛出和捕获异常比较轻量&lt;/li>
&lt;/ol>
&lt;h3 id="try-语句常用知识">try 语句常用知识&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">safe_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;尝试把输入转换为整数&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">TypeError&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 当某类异常被抛出时，将会执行对应 except 下的语句&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;type error: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">type&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> is invalid&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">ValueError&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 你可以在一个 try 语句块下写多个 except&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;value error: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> is invalid&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">finally&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># finally 里的语句，无论如何都会被执行，哪怕已经执行了return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;function completed&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="把更精确的-except-放在前面">把更精确的 except 放在前面&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">incr_by_key&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">key&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">d&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">➊&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Unknown error: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">KeyError&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;key &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> does not exists&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">incr_by_key&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">key&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">d&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">KeyError&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;key &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> does not exists&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;Unknown error: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="使用-else-分支">使用 else 分支&lt;/h4>
&lt;p>在使用 try 捕获异常的时候，有时需要再仅一切正常的时候做某件事&lt;/p></description></item><item><title>GitHub 2021 年 9 月热门 Python 项目</title><link>https://blog.chenguixian.com/post/python/hotest-python-repos-in-september-2021/</link><pubDate>Sat, 18 Sep 2021 16:43:38 +0800</pubDate><guid>https://blog.chenguixian.com/post/python/hotest-python-repos-in-september-2021/</guid><description>&lt;h2 id="yt-dlp">yt-dlp&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/yt-dlp/yt-dlp">https://github.com/yt-dlp/yt-dlp&lt;/a>&lt;/li>
&lt;li>简介
A youtube-dl fork with additional features and fixes&lt;/li>
&lt;li>star 数量
6359&lt;/li>
&lt;/ul>
&lt;h2 id="mockingbird">MockingBird&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/babysor/MockingBird">https://github.com/babysor/MockingBird&lt;/a>&lt;/li>
&lt;li>简介
🚀AI拟声: 5秒内克隆您的声音并生成任意语音内容 Clone a voice in 5 seconds to generate arbitrary speech in real-time&lt;/li>
&lt;li>star 数量
4285&lt;/li>
&lt;/ul>
&lt;h2 id="real-esrgan">Real-ESRGAN&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/xinntao/Real-ESRGAN">https://github.com/xinntao/Real-ESRGAN&lt;/a>&lt;/li>
&lt;li>简介
Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration.&lt;/li>
&lt;li>star 数量
2634&lt;/li>
&lt;/ul>
&lt;h2 id="onlyfans">OnlyFans&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/DIGITALCRIMINAL/OnlyFans">https://github.com/DIGITALCRIMINAL/OnlyFans&lt;/a>&lt;/li>
&lt;li>简介
Scrape all the media from an OnlyFans account - Updated regularly&lt;/li>
&lt;li>star 数量
2595&lt;/li>
&lt;/ul>
&lt;h2 id="ddia">ddia&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/Vonng/ddia">https://github.com/Vonng/ddia&lt;/a>&lt;/li>
&lt;li>简介
《Designing Data-Intensive Application》DDIA中文翻译&lt;/li>
&lt;li>star 数量
8944&lt;/li>
&lt;/ul>
&lt;h2 id="binance-trade-bot">binance-trade-bot&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/edeng23/binance-trade-bot">https://github.com/edeng23/binance-trade-bot&lt;/a>&lt;/li>
&lt;li>简介
Automated cryptocurrency trading bot&lt;/li>
&lt;li>star 数量
5048&lt;/li>
&lt;/ul>
&lt;h2 id="paddleocr">PaddleOCR&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/PaddlePaddle/PaddleOCR">https://github.com/PaddlePaddle/PaddleOCR&lt;/a>&lt;/li>
&lt;li>简介
Awesome multilingual OCR toolkits based on PaddlePaddle （practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices）&lt;/li>
&lt;li>star 数量
16325&lt;/li>
&lt;/ul>
&lt;h2 id="netbox">netbox&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/netbox-community/netbox">https://github.com/netbox-community/netbox&lt;/a>&lt;/li>
&lt;li>简介
Infrastructure resource modeling for network automation. Open source under Apache 2. Public demo: &lt;a href="https://demo.netbox.dev">https://demo.netbox.dev&lt;/a>&lt;/li>
&lt;li>star 数量
8897&lt;/li>
&lt;/ul>
&lt;h2 id="pytorch_geometric">pytorch_geometric&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/pyg-team/pytorch_geometric">https://github.com/pyg-team/pytorch_geometric&lt;/a>&lt;/li>
&lt;li>简介
Graph Neural Network Library for PyTorch&lt;/li>
&lt;li>star 数量
12399&lt;/li>
&lt;/ul>
&lt;h2 id="python">Python&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/TheAlgorithms/Python">https://github.com/TheAlgorithms/Python&lt;/a>&lt;/li>
&lt;li>简介
All Algorithms implemented in Python&lt;/li>
&lt;li>star 数量
118215&lt;/li>
&lt;/ul>
&lt;h2 id="depix">Depix&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/beurtschipper/Depix">https://github.com/beurtschipper/Depix&lt;/a>&lt;/li>
&lt;li>简介
Recovers passwords from pixelized screenshots&lt;/li>
&lt;li>star 数量
19943&lt;/li>
&lt;/ul>
&lt;h2 id="manim">manim&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/ManimCommunity/manim">https://github.com/ManimCommunity/manim&lt;/a>&lt;/li>
&lt;li>简介
A community-maintained Python framework for creating mathematical animations.&lt;/li>
&lt;li>star 数量
6872&lt;/li>
&lt;/ul>
&lt;h2 id="freqtrade-strategies">freqtrade-strategies&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/freqtrade/freqtrade-strategies">https://github.com/freqtrade/freqtrade-strategies&lt;/a>&lt;/li>
&lt;li>简介
Free trading strategies for Freqtrade bot&lt;/li>
&lt;li>star 数量
1415&lt;/li>
&lt;/ul>
&lt;h2 id="gfpgan">GFPGAN&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/TencentARC/GFPGAN">https://github.com/TencentARC/GFPGAN&lt;/a>&lt;/li>
&lt;li>简介
GFPGAN aims at developing Practical Algorithms for Real-world Face Restoration.&lt;/li>
&lt;li>star 数量
3431&lt;/li>
&lt;/ul>
&lt;h2 id="deepfacelab">DeepFaceLab&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/iperov/DeepFaceLab">https://github.com/iperov/DeepFaceLab&lt;/a>&lt;/li>
&lt;li>简介
DeepFaceLab is the leading software for creating deepfakes.&lt;/li>
&lt;li>star 数量
28873&lt;/li>
&lt;/ul>
&lt;h2 id="30-days-of-python">30-Days-Of-Python&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/Asabeneh/30-Days-Of-Python">https://github.com/Asabeneh/30-Days-Of-Python&lt;/a>&lt;/li>
&lt;li>简介
30 days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than100 days, follow your own pace.&lt;/li>
&lt;li>star 数量
7516&lt;/li>
&lt;/ul>
&lt;h2 id="compose">compose&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/docker/compose">https://github.com/docker/compose&lt;/a>&lt;/li>
&lt;li>简介
Define and run multi-container applications with Docker&lt;/li>
&lt;li>star 数量
23402&lt;/li>
&lt;/ul>
&lt;h2 id="black">black&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/psf/black">https://github.com/psf/black&lt;/a>&lt;/li>
&lt;li>简介
The uncompromising Python code formatter&lt;/li>
&lt;li>star 数量
22410&lt;/li>
&lt;/ul>
&lt;h2 id="devops-exercises">devops-exercises&lt;/h2>
&lt;ul>
&lt;li>url&lt;br>
&lt;a href="https://github.com/bregman-arie/devops-exercises">https://github.com/bregman-arie/devops-exercises&lt;/a>&lt;/li>
&lt;li>简介
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions&lt;/li>
&lt;li>star 数量
15681&lt;/li>
&lt;/ul>
&lt;h2 id="nft-mix">nft-mix&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>url&lt;br>
&lt;a href="https://github.com/PatrickAlphaC/nft-mix">https://github.com/PatrickAlphaC/nft-mix&lt;/a>&lt;/p></description></item></channel></rss>