(2022.06.16 Thur)
Python是动态类型语言dynamic typing,这意味着python中的变量或容器,在声明时无需标记其类型,如int,float,str等。而其类型是编译器在运行代码的时候做类型检测type check。
相比之下,静态类型语言static typing,比如Java,C++等,类型检测在编译时执行(先编译再运行)。
动态类型的核心是引用和对象分离。在Python中赋值是将对象的指针保存到变量中,调用对象则根据该指针/引用找到对应的对象。比如下面例子
>> x=[1,2]
>> y=x
>> x.append(4)
>> y
[1, 2, 4]
变量x被赋值[1, 2]
,实为指向了[1, 2]
。y被赋值x,是y指向x指向的数组,所以当x对数组做了append
操作,调用y也会看到对应的数组执行了相同的操作,其实他们指向的同一个数组。
动态类型语言中变量一旦被赋值,仍然可以修改该变量值,但在静态类型语言中,变量经过声明类型,则无法赋予类型以外的数值。
同时,静态语言比动态语言运行速度更快。
网友评论