讨论类型时,最好考虑两条不同的坐标线!
强类型和弱类型
如果一门语言很少隐式转换类型,说明它是强类型语言。如果经常这么做,说明它是弱类型语言。其中,java,c++和python是强类型语言,php,JavaScript和Perl是弱类型语言。
弱类型JavaScript会进行隐式的类型转换:
console.log(''=='0');
console.log(0==''); //true
console.log(0=='0'); //ture
强类型python在相同的比较中则不会进行隐式转换:
print(''=='0')
print(0=='')
print('0'==0)
因为python不会自动在字符串和数字之间强制转换,所以上述三个比较都是False。
静态类型和动态类型
在编译时检查类型的语言是静态类型语言,在运行时检查类型的语言是动态语言。静态语言需要声明类型。因此python是动态语言。
看到这里,小伙伴可能还会想到另一个分类:
解释性语言和编译性语言
解释性语言是写的代码不能直接编译成机器码,需要解释器将其翻译成机器语言,并且是一边翻译一边执行。而编译性语言是写的代码可以直接编译成机器语言,相当于直接有现成的。而作为解释性语言的python性能的慢的原因也是如此。
所以,最后总结一下:Python是强类型动态的解析性语言!
同步更新于个人博客系统:《流畅的python》学习笔记之python是什么类型的语言?