知行编程网知行编程网  2022-12-06 03:00 知行编程网 隐藏边栏  5 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python是动态强类型的吗的相关知识,希望可以帮到处于编程学习途中的小伙伴

Python是动态强类型的,我们可以根据Python中变量的定义和使用来判断。


Python变量声明和定义

与C#不同,Python在使用变量之前无须定义它的类型,试着运行下面的例子:

i = 12 print i

Python 是动态强类型的吗?

从上面我们可以看出变量i在使用前不需要定义,但是变量必须声明和初始化。尝试运行以下示例:

i = 1
print i + j

上述代码会产生异常:“NameError: name 'j' is not defined”,Python提示变量j未定义。这与 BASIC 等弱类型语言不同。在BASIC中,执行上述代码不会出现异常。大家可以在EXCEL的VBA开发环境下试试,把print改成MsgBox,结果会输出1。这说明Python不是BASIC那样的弱类型语言。

另一方面,Python 和 C# 的一个很大区别是在程序运行过程中,同一个变量名可以代表不同类型的数据(在不同的阶段)。看看下面的例子:

i = 1
print i,type(i),id(i)
i = 10000000000
print i,type(i),id(i)
i = 1.1
print i,type(i),id(i)

变量i的类型在程序执行过程中会发生int、long和float的变化,这与静态类型语言(如C等)有很大区别。在静态语言中,只要一个变量获取了一种数据类型,它就永远是这种类型,变量名代表用来存储数据的内存位置。 Python中使用的变量名只是对各种数据和对象的引用,而存储数据的内存位置是通过id()获取的。我们输入的三个数据,1, 10000000000 和 1.1,都会被存储在id()中。在那些内存位置,直到垃圾车把它拉走(当系统确定你不再使用它时)。这是典型的动态语言,它在给变量赋值时确定变量的类型。

另一方面,Python又是强类型的,试着运行下边的例子:

# -*- coding: utf-8 -*-
i = 10; j = 'ss'
print i+j
#正确的写法是print str(i)+j,输出10ss

生成异常:“TypeError:+ 不支持的操作数类型:'int' 和 'str'”。在 BASIC 等弱类型语言中,上述示例将正常运行并返回(尽管有时不可预测)结果。

因此,我们说Python不仅是一门动态类型语言,还是一门强类型语言,这一点与C#不同。 C# 程序员可能需要一段时间来习惯 Python 变量的声明、定义和使用,但我相信你很快就会喜欢它,因为它使事情变得更容易(而且不是不安全的)。而且,C# 4.0 已经开始以类似的方式定义和使用变量(通过在变量名前添加关键字 dynamic)。如果你先学习Python变量,你将能够更快地适应C#4.0的动态编程特性。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享