为什么说 Python 是强类型语言?

为什么说 Python 是强类型语言?

强类型语言

强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。

  java、.NET、C++等都是强制类型定义的。一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。

 

例如你有一个整数,如果不显式地进行转换,你不能将其视为一个字符串。

弱类型语言

与强类型定义相反,类型可以被忽略的语言的语言。

VBScript是弱类型定义的。在VBScript中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,然后可以把它看成整数123,而不需要显示转换。

 

  但其实它们的类型没有改变,VB只是在判断出一个表达式含有不同类型的变量之后,自动在这些变量前加了一个clong()或(int)()这样的转换函数而已。能做到这一点其实是归功于VB的编译器的智能化而已,这并非是VB语言本身的长处或短处。

区别

对于“强弱类型”判定的核心是“不同类型的变量是否允许隐式转化”

强类型语言:倾向于不对变量的类型做隐式转换

弱类型语言:倾向于对变量的类型做隐式转换

python强弱判定

python不倾向于对变量的类型做隐式转换,根据定义可以判定是一门强类型语言。

例如:

a = 1

b = "1"

a < b // Type error

a == b // false,符合==的意思,类型都不一样显然是不相等的

1 + 1.1 // 2.1,为了符合直觉做了隐式转换

容易引起干扰的是动态语言和静态语言

动态类型语言

动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。可以在运行时改变变量的类型

Python和Ruby就是一种典型的动态类型语言。

静态类型语言

数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型。不可以在运行时改变变量的类型

C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

python动静判定

python可以在运行时改变变量的类型,因此python是一门动态类型语言

a = 1

a = "1" // 不会报错

结论

python是一门强类型动态语言。

编程语言画了一张分类图:

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/Kwoky/article/details/108507374