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/
猜你喜欢LIKE
相关推荐HOT
更多>>python中的filter函数功能是什么?
python中的filter函数功能是什么?在python中,面对众多的数据,我们要过滤筛选出我们需要的数据。python中的filter函数就是起到了过滤筛选的作...详情>>
2023-11-10 20:37:27pythontime模块是什么
pythontime模块是什么在python中使用时间,就免不了和time模块打交道,另外两个模块这个暂时先不做介绍。做time模块的使用上,我们可以用它来对...详情>>
2023-11-10 15:53:16python是什么编程语言
python是什么编程语言1、说明是一种面向对象、解释型计算机程序设计语言,由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。Pyt...详情>>
2023-11-10 15:21:05python异常处理的两种技巧
python异常处理的两种技巧1、传递异常有时我们会在捕捉到一个异常后重新引发它(传递异常),实现起来很简单,使用不带参数的raise语句即可。deff...详情>>
2023-11-10 14:49:39热门推荐
python中的filter函数功能是什么?
沸python delattr函数如何使用?
热python中pdb模块怎么用?
热Python如何截图保存?
新python中缺少module怎么办?
python strftime和strptime的不同分析
python time.strptime的格式化
python中@contextmanager是什么?
python对象的三要素是什么
pythonGIL在Python多线程的应用
python如何对多个CSV文件进行读取
pythonif嵌套命令如何理解?
python对列表进行永久性或临时排序的方法
python生成器调用方法引发异常