原文链接:http://www.juzicode.com/archives/186
Python中有几大基本数据类型:numbers、string、list、tuple,dict,set等,本文介绍基本数据类型numbers。
1 变量
在介绍数据类型前,先看下变量是什么。在编译型语言(比如C语言)中,一个变量需要先声明其类型,再赋值和使用,比如C语言中定义一个变量a,并赋值为10:
int a;
a=10;
但是在python中,并不需要这么麻烦先声明其类型,而是简单粗暴直接定义:
a=10
这种做法有好处也有坏处,好处是使用起来更方便,但是因为没有编译型语言那样在编译阶段进行语法检查,如果没有先定义就使用在运行阶段就会导致异常。下面的例程就是一个没有定义就使用的例子,在运行阶段发生了NameError错误,提示a这个变量没有定义,这样会中断程序的运行,所以第三行的“end—”字符没有在屏幕上打印出来:
2 整数(int)
假设定义了a=3,并没有声明其类型,python解释器根据“=”后面的数据类型直接推导出左侧的a 是int类型。我们也可以通过python内置的type()函数打印出其类型:
>>> a = 3
>>> print(a)
3
>>> type(a)
< class 'int'>
>>>
整数类型的数据可以进行加减乘除余计算,见例程datatype-int.py:
源代码 | 运行结果 |
print(‘\n—–欢迎来到 www.juzicode.com!—–‘) print(‘int数据类型例程: ‘) a=5 b=3 print(‘a =’,a) print(‘b =’,b) print(‘a类型:’,type(a)) print(‘b类型:’,type(b)) print(‘a+b =’,a+b) print(‘a-b =’,a-b) print(‘a*b =’,a*b) print(‘a//b =’,a//b) print(‘a%b =’,a%b) print(‘a/b =’,a/b) print(‘a//b的数据类型:’,type(a//b)) print(‘a/b的数据类型:’,type(a/b)) | —–欢迎来到 www.juzicode.com!—– int数据类型例程: a = 5 b = 3 a类型: <class ‘int’> b类型: <class ‘int’> a+b = 8 a-b = 2 a*b = 15 a//b = 1 a%b = 2 a/b = 1.6666666666666667 a//b的数据类型: < class ‘int’> a/b的数据类型: < class ‘float’> |
【注意】在上面的例程中,最后一个除法,得到的实际不是一个整数,而是后面要介绍的浮点数。在python里整数的除法有2种类型,一种是普通的除法,用“/”表示,得到的总是浮点数,不管这种除法的到的数据小数点后面是否都是0,(就是说即使能被整除得到的仍然是浮点数,比如3/1得到的是3.0的浮点数)。另外一种除法叫做“地板除”,用“//”表示,这种除法得到的数据是去掉小数点后面值的整数类型,类似于c语言的整型数据的除法“/”。
3 浮点数(float)
浮点数直观理解就是带小数点的数值,在下面的例子中可以看到如果定义a=6.0,print打印它的类型看到的是“float”类型。从下面的例子也可以看出如果一个浮点数据和一个整型进行运算,得到的仍然是一个浮点数。见例程datatype-float.py:
源代码 | 运行结果 |
print(‘\n—–欢迎来到www.juzicode.com!—–‘) print(‘float数据类型例程:’) a=6.1 b=3 print(‘a =’,a) print(‘b =’,b) print(‘a类型:’,type(a)) print(‘b类型:’,type(b)) print(‘a+b =’,a+b) print(‘a-b =’,a-b) print(‘ab =’,ab) print(‘a//b =’,a//b) print(‘a%b =’,a%b) print(‘a/b =’,a/b) print(‘a//b的数据类型:’,type(a//b)) print(‘a/b的数据类型:’,type(a/b)) | —–欢迎来到www.juzicode.com!—– float数据类型例程: a = 6.1 b = 3 a类型: b类型: a+b = 9.1 a-b = 3.0999999999999996 a*b = 18.299999999999997 a//b = 2.0 a%b = 0.09999999999999964 a/b = 2.033333333333333 a//b的数据类型: < class ‘float’> a/b的数据类型: < class ‘float’> |
【注意】在进行除法运算时,要确保被除数不为0,否则会导致抛ZeroDivisionError异常:
>>> 5.1/0 Traceback (most recent call last): File “<stdin>”, line 1, in <module> ZeroDivisionError: division by zero >>> |
浮点数还有一种指数表示方法,用字母e或者E表示10的幂,比如5.2e3或者5.2e+3表示5200,5.2e-3表示0.0052:
>>> 5.2e3 5200.0 >>> 5.2e+3 5200.0 >>> 5.2e-3 0.0052 |