学习过C、C++的同学都知道,使用这二者编写代码时,变量在使用前必须通过类似“int a=123”的语句提取申明,然后在真正赋值的时候校验取值跟类型是否相符。也就是常说的“静态编程语言”。
而Python属于“动态编程语言”:使用时可以在未提取申明的情况下直接赋值,程序在真正运行的时候再去动态的根据=右侧的取值来确定变量的类型。
因为“动态编程语言”的特性,Python在赋值的时候,总是先计算=右侧表达式的结果并申请内存空间进行存储,然后判断变量此时的类型并将变量指向结果的内存地址以完成赋值操作。
众所周知,根据编程语言是否提前将源代码编译得到可供机器直接运行的二进制机器码,可将语言分为两大阵营:“编译型语言”和“解释型语言”。
“编译型语言”的典型代表:C、C++,其最主要的优势就是:运行效率最高,最大的不足就是:平台兼容性差,主要原因就在于:提前编译成机器可运行的机器码。
“解释型语言”的典型代码:Shell,其最主要的优势就是:平台兼容性最好,最大的不足就是:运行效率最低,主要原因就在于:没有提前编译,运行时需要逐行读取并运行。
为了在“运行高效”和“良好的兼容性”方面取得最佳的平衡,Python其实是有编译过程的(将py的源码编译成相对高效的字节码pyc),不过完成的内容相对C那种严格编译型语言较少,具体内容如下: