Python 的缺点以及这些缺点是否会致命
像所有的技术一样,Python也有它的弱点。我将一一介绍最重要的缺陷,并评估这些缺陷是否致命。
速度
Python很慢。真的,非常非常慢。平均而言,使用Python完成一项任务所需的时间,是任何其他编程语言的2~10倍。
造成这种情况的原因有很多。其中之一是,它是动态类型的,记住,你不需要像在其他编程语言那样指定数据类型。这意味着需要使用大量的内存,因为程序需要为它在任何情况下都能工作的每个变量预留足够的空间,而且大量的内存使用意味着大量的计算时间。
另一个原因是,Python一次只能执行一个任务。这是采用灵活数据类型带来的后果:Python需要确保每个变量只有一种数据类型,而并行化的进程可能会弄乱这一点。
相比之下,一般的Web浏览器可以同时运行十几个不同的线程。此外,还有其他一些理论。
但说到底,这些速度问题都无关紧要。计算机和服务器已经变得如此便宜,以至于我们谈论的只是几分之一秒的时间。实际上,最终用户并不在乎他们的应用程序是在0.001秒还是0.01秒内加载的。
作用域
最初,Python的作用域是动态的。这基本上意味着,要计算表达式,编译器首先搜索当前块,然后依次搜索所有调用函数。这就是大多数现代编程语言使用静态作用域的原因。
Python曾试图过渡到静态作用域,但搞砸了。通常情况下,内部作用域(例如函数中的函数)能够查看和更改外部作用域。但在Python中,内部作用域只能看到外部作用域,而不能改变它们,这就导致了很多混乱的情形。
Lambda
尽管Python具有所有的灵活性,但Lambda的使用还是相当受限的。Lambda只能是Python中的表达式,不能是语句。
另一方面,变量声明和语句始终是语句。这意味着Lambda并不能用于它们。
表达式和语句之间的这种区别是相当随意的,在其他编程语言中并不会存在。
空白使代码的可读性更强,但可维护性却更低了。
在Python中,你可以使用空格和缩进来表示不同级别的代码。这使得它在视觉上具有吸引力,理解起来也更直观。
其他编程语言,如C++,则更多地依赖花括号和分号。尽管这可能在视觉上不够吸引人,对初学者也不太友好,但是它使代码更易于维护。对于较大的项目,这个方法更有用。
像Haskell这样的新语言解决了这个问题:它们依赖于空格,但为那些希望不使用空格的人提供了另一种语法。
移动开发
我们正在见证从台式计算机到智能手机的转变,很明显,我们需要强大的语言来开发移动软件。
但使用Python开发的移动应用并不多。不过,这并不意味着它做不到—有一个名为Kivy的Python软件包就是专门用于开发移动应用的。
但是Python在设计时并没有考虑到移动开发。因此,即使它可能会为基本任务产生差强人意的结果,你最好的选择是使用一种专为移动开发而创建的编程语言。一些广泛使用的移动编程框架包括ReactNative、Flutter、Iconic和Cordova。
需要明确的是,笔记本计算机和台式计算机应该会在未来很多年里继续存在。但是,由于移动设备的流量早已超过台式计算机,所以可以肯定地说,学会Python并不足以成为经验丰富的全能开发人员。
运行时错误
Python脚本不是先编译后执行的。相反,它会在每次执行时编译,因此,任何编码错误都会在运行时显示出来。这会导致性能差、耗时长,并且需要进行大量测试。比如,很多很千锋试。
这特别适合初学者,因为测试可以教会他们很多东西。但是对于经验丰富的开发人员来说,必须用Python调试复杂的程序会让他们出错。这种性能的缺乏是在Python上设置时间戳的最大因素。
以上内容为大家介绍了Python的缺点以及这些缺点是否会致命,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。http://www.mobiletrain.org/
相关推荐HOT
更多>>python字符串需要注意的语法问题
python字符串需要注意的语法问题语法错误是经常发生的一个错误。当一个程序包含非法的Python代码时,会产生语法错误。举例来说,在包含单引号的...详情>>
2023-11-14 18:23:24python函数标注是什么
python函数标注是什么在参数的使用方法中,还有一种解包的情况是需要我们掌握的。比如,将列表或者字典的值转换为函数的参数,就需要用到参数解...详情>>
2023-11-14 14:13:35python正负索引的使用
python正负索引的使用本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。1、说明使用正索引(从左至右)、负索引(从右至左)访问元素,时...详情>>
2023-11-14 13:45:04python垃圾回收的机制过程
python垃圾回收的机制过程本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。1、步骤(1)收集所有容器对象(list,dict,tuple,customClas...详情>>
2023-11-14 13:05:15