欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!
描述
- 一种 动态语言 。
类型是在运行时定义的。这意味着你不需要在创建变量时显式声明变量的类型。
即使你声明了——它也不会让它更快 (hello mypy)。 - Python 是一种动态语言,但它使用 严格类型检查, 这对于任何严肃的动态语言都是必不可少的 。
它确保操作被检查兼容性,而不会自动强制类型转换。
在弱类型中,数据强制转换可能是自动的,如果语言是动态的(例如 JS,其中 1 + ‘1’ 是 ‘11’ 或者 1 == “1” 是 true),这可能导致意外行为。 - 它自带无数的数据类型 ,如果没有合适的,你可以创建自己的 。
- 它支持面向对象编程和函数式编程 。
- Python 面向对象编程的一个优点是类级别的属性不是在实例之间共享的,与 Ruby 不同。
- 它具有 出色的元编程 能力,深度大多数其他语言都不提供。
- 它没有命名空间,但提供了类和静态方法。因此使用类,你可以 根据需要“创建”命名空间 。
- 它默认有 GIL,这是硬编码且不可妥协的。然而,在 Python 3.13 之后,你可以下载源代码并使用一个标志来 禁用它 。
- 全局解释器锁(GIL) 使得 Python 主要适用于单线程和异步编程。(多线程仅限于 I/O 密集型任务。多进程?在马拉松开始前就朝自己膝盖开枪可就不好了。)
然而,Python 的 “科学” 方面,即 CPU 密集型任务,是通过 C 或 C++集成来处理的。 - Python 的执行方式很特别。它首先被翻译成 Python 字节码(.pyc),然后逐行执行,这也是它比编译型语言慢的一个原因。
- Python 代码在执行后仍然可读,这在逆向工程方面是不安全的。这就是为什么有各种工具来加密中间代码或直接将其转换(比如 Nuitka)。
- 开箱即用 ,Python 自带了一套数据类型(字符串、数字),其他所有你需要的东西都需要自己创建。
- 在 Python 中赋值变量时 , 引用会被存储在栈上,并指向一个内存地址 ,该地址指向存储对象的内存块 。
工具
- 有 PyPy,比标准的 CPython 更快。(它检测到最常用的热点,并使用嵌入的 JIT 编译器将它们编译成机器码,然后进行缓存。)然而,它的启动时间非常长。此外,Pypy 的开发者不想处理垃圾回收和其他事情,所以 他们保留了 GIL。因此,在企业开发环境中,PyPy 解决非常罕见的问题。
- 有各种 代码检查工具和代码分析器 ,比如 mypy 或 flake8,实际上它们除了“最佳实践”外并没有提供太多功能。所以它们不会神奇地将垃圾(JavaScript)变成糖果(TypeScript)。
Python 解决的问题
- 快速简单的开发
任何人都可以安全地用 Python 编程,而不用担心风险。
GIL、递归最大深度等。Python 就像一架自动驾驶的飞机。
即使开发者不知道细节,这篇文章也提供了这些答案。 - 跨平台兼容性
绝对是 - 自动化与脚本编写。
取决于任务。有时 Python 更合适,有时 Shell 就足够了。 - 数据科学和机器学习。
用 C++也可以做到,但完全取决于便利性,也就是开发时间。就像 ChatGPT 是用 Python 编写的。 - 后端开发。
对于中小型企业,Python 非常适用。
此外,Odoo,中小型企业可爱的解决方案 (垃圾) 已经在这里。
对于大型企业,这更具争议性。
– 在一方面,Python + Go 就足够了。
在其他方面:Django 的 MVT 模式与 app,也就是在单体中的伪微服务是特定的,FastAPI 则是绝对的糟糕(异步开发在 Python 中就是糟糕,无尽的 await 和 Coroutine-南瓜),Flask 不适合企业使用,其他的要么已经死了要么不够认真。
当你这么说时,有人会说“顺便我们用了 Flask 并且有数百万用户”,结果发现 Flask 不是主要的框架,而是作为 API qham 在某个微服务中使用,或者它是一段遗留代码。
然而,现实和诚实地讲,Python 本身并不是解决任何问题的最佳选择。它更像是引入了保姆功能。它解决了关于时间和能力的问题。当没有额外的资源可以负担时。然而,Python 是非常稳固的。它不是 JavaScript、Ruby 或 PHP。是那些开发者想要证明他们是“真正的工程师”,并且把 Python 看作是自我肯定的一种简单目标的语言。
Python 的优势
Python 实际上是一个概念集合。
- 封装的概念
由于 Python 的本质易于儿童理解 ,一些概念被抽象化了。
例如,Python 不直接暴露指针。 - 修改但可用的概念
如 JS 中的承诺(这里它们是特性) - “只是为了存在”而存在的概念
像泛型、垃圾回收。 - 按照原样提供概念
像函数式编程特性(map、filter 等) - 通过第三方库引入外部概念
有些概念不是内置的,但可以在第三方库中找到,比如静态或动态数组、向量等。
最后的思考
Python 只是一个糟糕的语言,从长期职业发展的角度来看也是这样。
- 如果你想只是追求职业,那么选择 JavaScript。
- 如果你想拥有一个稳固的职业,那么选择 Go 和 Rust。
否则你需要超越全球数百万位曾经创建过类并随时准备被 IT 行业雇佣的开发者。
然而,Python 非常出色,因为它提供了深度,正如之前提到的,它就像一把瑞士军刀。
如果你真正掌握了 Python,转向任何其他严肃的语言都会变得容易。Python 迫使你面对动态与静态类型、引用、内存模型、面向对象编程、函数式编程和元编程等概念——即使它们被抽象化了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/125001.html