suchen
HeimBackend-EntwicklungPython-Tutorial如何用通俗易懂的语言解释《Flask 框架作者希望看到的 Python》到底在说什么?

原文:Flask 框架作者希望看到的 Python

Python 真的有这种「最大的设计错误」吗?难道 Python 设计者看不到?「槽(slots)系统」真的很糟糕吗?

回复内容:

作者吐槽了Python语言与CPython解释器结合得过于紧密。甚至有时候CPython解释器的某些实现成为了语言的一部分。
虽说有语言规范,但是大多数情况下,它只是规定了解释器要做什么,甚至连这些都没有规定。

Python的问题在文章的“该死的解释器”一节有了一个直接的解释:
解释器把这些类型结构体直接暴露给Python代码。

比如,你写了一个BigInteger类(只是举例子而已)
<span class="k">class</span> <span class="nc">BigInteger</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
    <span class="o">...</span>
    <span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
        <span class="k">return</span> <span class="n">BigInteger</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">Value</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">Value</span><span class="p">)</span>
    <span class="o">...</span>
我认为作者的意思是,Python现在的发展模式是,公开搜集PEP,然后在现有基础上根据被采用的PEP打补丁,却几乎从来不对早起历史遗留下的解释器设计做调整和完善,并且几乎是针对CPython的。新特性越来越多,语言越来越复杂,老的问题一直没有改进,并且PSF致力于把一些历史遗留的烂设计解释成这是Python的哲学……与此同时,Python语言的文档其实是CPython的文档,于是乎其它实现,如Jython、PyPy、IronPython也不得不参照这些个奇怪的设计来做……

他举的例子,如slots的设计就是完全为了兼容了早期解释器把内置类型的一些方法而做的,以现在的角度来看完全没有必要……

再说GIL,如果按照python哲学,PSF说这么做更便于写C扩展什么的,说只需要一个解释器实体什么的,明明可以脱离GIL,并且别家也都这么做了,性能也确实能有很大改善,再说GIL带来的明显性能缺陷……没有任何道理把单解释器归到python哲学里……

大致如此吧…… 所以Python / Ruby这些编程语言基本上都是implement-driven而非specification-driven来设计的。

Ruby有过1.8到1.9的一次蜕变,整体上还算是好的。
当然你也会看到其他人在吐槽:Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby 整篇文章的意思就是说:

Python明面上给了你一套标准,背地里自己老走后门;
操蛋的是,写得很多库之类的还特么依赖自己的后门儿,就算新来的,比如PyPy想走标准,也走不通了,最后也被迫走了后门;
更操蛋的是,他那个后门,开的也不是很高级,一堆缺陷。 首先,flask做的挺烂的,混乱的测试支持,没准的卡死问题。

然后,他提到的很多问题是框架设计层面的,比如slot,一般用户用不到,就算需要类似功能也可以有其他实现。

Python C层面确实很多问题,甚至我怀疑都不能算积重难返,而是故意拖延。Python3在几年前决定大规模重构,但很多核心问题还是扔在那里没动。比如GIL仍然是进程级的,而不是解释器级的。以当前状态看,如果有Python4的那天,肯定还是个不兼容的升级。

说说看而已,对正常的Python用户,这些讨论都没什么卵用。反正大家又用不上。 Slot 这一点没看出来有什么大不了的槽点,cpython 投机取巧又不是说别的解释器不能投机取巧了,无非就是语言规范散漫了点,比这更戳死人的槽点多了去了。
私以为,以 flask 那个样子,作者这种吐槽不用太当真,什么时候 bottle 作者也开始吐槽了再说吧。
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Der Hauptzweck von Python: Flexibilität und BenutzerfreundlichkeitDer Hauptzweck von Python: Flexibilität und BenutzerfreundlichkeitApr 17, 2025 am 12:14 AM

Die Flexibilität von Python spiegelt sich in Multi-Paradigm-Unterstützung und dynamischen Typsystemen wider, während eine einfache Syntax und eine reichhaltige Standardbibliothek stammt. 1. Flexibilität: Unterstützt objektorientierte, funktionale und prozedurale Programmierung und dynamische Typsysteme verbessern die Entwicklungseffizienz. 2. Benutzerfreundlichkeit: Die Grammatik liegt nahe an der natürlichen Sprache, die Standardbibliothek deckt eine breite Palette von Funktionen ab und vereinfacht den Entwicklungsprozess.

Python: Die Kraft der vielseitigen ProgrammierungPython: Die Kraft der vielseitigen ProgrammierungApr 17, 2025 am 12:09 AM

Python ist für seine Einfachheit und Kraft sehr beliebt, geeignet für alle Anforderungen von Anfängern bis hin zu fortgeschrittenen Entwicklern. Seine Vielseitigkeit spiegelt sich in: 1) leicht zu erlernen und benutzten, einfachen Syntax; 2) Reiche Bibliotheken und Frameworks wie Numpy, Pandas usw.; 3) plattformübergreifende Unterstützung, die auf einer Vielzahl von Betriebssystemen betrieben werden kann; 4) Geeignet für Skript- und Automatisierungsaufgaben zur Verbesserung der Arbeitseffizienz.

Python in 2 Stunden am Tag lernen: Ein praktischer LeitfadenPython in 2 Stunden am Tag lernen: Ein praktischer LeitfadenApr 17, 2025 am 12:05 AM

Ja, lernen Sie Python in zwei Stunden am Tag. 1. Entwickeln Sie einen angemessenen Studienplan, 2. Wählen Sie die richtigen Lernressourcen aus, 3. Konsolidieren Sie das durch die Praxis erlernte Wissen. Diese Schritte können Ihnen helfen, Python in kurzer Zeit zu meistern.

Python gegen C: Vor- und Nachteile für EntwicklerPython gegen C: Vor- und Nachteile für EntwicklerApr 17, 2025 am 12:04 AM

Python eignet sich für eine schnelle Entwicklung und Datenverarbeitung, während C für hohe Leistung und zugrunde liegende Kontrolle geeignet ist. 1) Python ist einfach zu bedienen, mit prägnanter Syntax, und eignet sich für Datenwissenschaft und Webentwicklung. 2) C hat eine hohe Leistung und eine genaue Kontrolle und wird häufig bei der Programmierung von Spielen und Systemen verwendet.

Python: zeitliches Engagement und LerntempoPython: zeitliches Engagement und LerntempoApr 17, 2025 am 12:03 AM

Die Zeit, die zum Erlernen von Python erforderlich ist, variiert von Person zu Person, hauptsächlich von früheren Programmiererfahrungen, Lernmotivation, Lernressourcen und -methoden und Lernrhythmus. Setzen Sie realistische Lernziele und lernen Sie durch praktische Projekte am besten.

Python: Automatisierung, Skript- und AufgabenverwaltungPython: Automatisierung, Skript- und AufgabenverwaltungApr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Python und Zeit: Machen Sie das Beste aus Ihrer StudienzeitPython und Zeit: Machen Sie das Beste aus Ihrer StudienzeitApr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python: Spiele, GUIs und mehrPython: Spiele, GUIs und mehrApr 13, 2025 am 12:14 AM

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft