误解1:Python属于弱类型?
曾经看到有人提问怎么才能学好弱类型语言,比如python?
Python是弱类型?Python并不是弱类型,Python是动态型强类型语言。
这里有一个对于各种语言类型的简单定义:
动态型语言:运行期间才做数据类型检查的语言,即动态类型语言编程时,永远不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。
静态型语言:编译期间做检查数据类型的语言,即写程序时要声明所有变量的数据类型,是固定的。使用数据之前,必须先声明数据类型。相当于使用之前,首先要为它们分配好内存空间。
强类型语言:一旦变量被指定某个数据类型,如果不经强制转换,即永远是此数据类型。
弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
误解2:Python速度太慢了?
在编程世界里,很多门外汉也都知道,运行速度最快的是C,运行很慢的是python。Python作为动态性语言,因为对象模型等种种原因导致他的运行速度很慢。
然而对于速度的定义并不单单局限于运行的速度,整体的一个流程中,各个方面的综合速度才是衡量的标准。
Python通过它独具优势的优化性能让自己变得更加高效。python运行速度慢,但是代码量非常少,几十行代码就能做到C几百行才能做到的东西。同时,它也比C更加的容易上手使用,用法的灵活性和兼容性极大地节省了开发时间。
同时Python拥有大量的自带以及第三方库,这让他在与其他语言的比较中显得更加效率。
误解3:Python不够安全?
在大众眼中,Python作为解释型语言,通常采用源码方式发布软件,这样会使得代码出现保密性不好,安全性不高的情况。
其实Python是支持编译的,他是编译+解释的混合类型。运行环境的安全是非常重要的一环,每种语言都有反汇编器或可以被破解。CPython则通过简单稳定的虚拟机来解决这些问题。
同时,Python还具有一系列广泛开源的、行业标准的安全库,它们将hashlib,PyCrypto和OpenSSL结合在一起,通过PyOpenSSL,进行一些处理来满足各种安全和性能需求。
误解4:Python仅仅是一门脚本语言?
脚本一直没有严格的定义。简单的说,代码比较动态,以源代码方式发布执行的,就可以称作脚本了。Python虽然也有编译的步骤,但是大多数情况Python直接接受的输入还是源代码,这也是大家直接判断python是一门脚本语言的原因之一。
但是Python并不仅仅是一门脚本语言。Linux杂志读者报告显示Python是最好的编程和脚本语言之一。Python正在积极地接管Java、PHP、C+、bash、Perl、Ruby等,它通过灵活且效率的技术不断减少开发人员在创建独立应用程序、Web应用程序、游戏应用程序、企业应用程序和其他各种应用程序方面的工作量。
误解5:Python缺乏并发性?
很多人都会说Python缺乏并发性,其实并不是如此。在说Python的并发性之前,我们不得不提到一个概念,全局解释器锁—GIL。
首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。GIL作为一个全局锁,对多线程的上下文切换有很大的影响,它是Python大多数使用情况下的性能优化,GIL可以让操作系统的线程或绿色线程使用起来更容易,同时不影响多进程的使用。
同时Python是有很多并发性包和框架的。Python拥有强大的并发原语,包括generators, greenlets, Deferreds, 和futures.。同时还有优秀的并发框架,包括eventlet, gevent,和Twisted。
目前大量服务器端软件采用Python开发,我们也看到Python服务器每天每台机器有数百万次的请求,但它们都可以轻松的处理。所以不能说Python缺乏并发支持。