标准数据类型

Python3 中有六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)

Python3 的六个标准数据类型中:
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。

Number(数字)

Python3支持int、float、bool、complex(复数)。bool是int的子类。

整数类型int

在Python3里,只有一种整数类型int,表示为长整型,没有长度限制。整数可以是二进制,八进制,十进制,十六进制。
二进制是以0b或0B开头,后面跟数字0或1。
八进制是以0o(数字0和小写字母o)或0O(数字0和大写字母O)开头,后面跟0-7。
十进制是以非0开头,后跟0-9。
十六进制是以0x或0X开头,后跟0-9,a-f,A-F。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
a = 0b10  # 二进制 相当于十进制2
b = 0o76  # 八进制 相当于十进制62
c = 10    # 十进制
d = 0xF9  # 十六进制 相当于十进制249

print(a)
print(b)
print(c)
print(d)

print(type(a)) # type函数的作用是显示对象的类型
print(type(b))
print(type(c))
print(type(d))

执行以上程序会输出如下结果:

1
2
3
4
5
6
7
8
2
62
10
249
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>

整数可以添加下划线,方便分组。数字之间和0b 0O 0x等进制说明符之后都可以添加下划线。下划线不影响数字的大小,运行时,会忽略掉下下划线。

例如:

1
2
3
4
5
6
7
8
9
a = 0b_10
b = 0o7_6
c = 1_0  
d = 0xF_9

print(a)
print(b)
print(c)
print(d)

执行以上程序会输出如下结果:

1
2
3
4
2
62
10
249

注意: 不能连续添加两个以上下划线,会报语法错误。

例如:

1
2
a = 0b__10
print(a)

执行以上程序会输出如下结果:

1
2
3
4
5
$python3 main.py
  File "main.py", line 1
    a = 0b__10
          ^
SyntaxError: invalid token

十进制的数字前面不能是0开头的数字,此限制主要是为了区别Python2里的八进制(Python2里面的八进制是以0开始后面跟着数字0-7)。

例如:

1
2
c = 0100  
print(c)

执行以上程序会输出如下结果:

1
2
3
4
5
$python3 main.py
  File "main.py", line 1
    c = 0100
           ^
SyntaxError: invalid token

浮点数类型float

带有小数点的数字或者用科学计数法表示的数字,是float类型(科学计数法可能不带小数点)。以下都是浮点数。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
a = 3.14
b = 10.   # 也可以写作 b = 10.0
c = .001  # 也可以写作 c = 0.001

print(a)
print(b)
print(c)

print(type(a))
print(type(b))
print(type(c))

执行以上程序会输出如下结果:

1
2
3
4
5
6
3.14
10.0
0.001
<class 'float'>
<class 'float'>
<class 'float'>

浮点数也可以带有下划线,但是不能紧跟在句点后面。

例如:

1
2
3
a = 3.1_4   # 可以
b = 1_0.    # 可以
a = 3._1_4  # 不可以,会报SyntaxError异常

还可以用科学指数法e或者E来表示浮点数。

例如:

1
2
3
4
5
6
7
8
a = 3.14e-2 #相当于 3.14 * (-100)
b = 5E2     #相当于 5.0 * 100

print(a)
print(b)

print(type(a))   # type函数的作用是显示对象的类型
print(type(b))

执行以上程序会输出如下结果:

1
2
3
4
0.0314
500.0
<class 'float'>
<class 'float'>

用科学计数法表示浮点数时,请注意,整数和指数部分总是用十进制,可以添加数字0。

例如,下面的a和b是合法的,表示相同大小的数字。

1
2
3
4
5
a =3.14e-02
b =03.14e-02

print(a)
print(b)

执行以上程序会输出如下结果:

1
2
0.0314
0.0314

布尔类型bool

bool是int的子类。布尔值只有True、False两个值。

内置函数isinstance()用来判断一个对象是否属于一个已知的类型。isinstance()会认为子类是一种父类类型,考虑继承关系。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
a = False
b = True
c = 10
print(type(a))
print(type(b))
print(isinstance(a,int))  # 输出变量a的类型是否是int类型或者int的子类类型,结果是True
print(isinstance(b,int))  # 输出变量b的类型是否是int类型或者int的子类类型,结果是True
print(isinstance(c,int))  # 输出变量c的类型是否是int类型或者int的子类类型,结果是True
print(isinstance(a,bool)) # 输出变量a的类型是否是bool类型或者bool的子类类型,结果是True
print(isinstance(b,bool)) # 输出变量b的类型是否是bool类型或者bool的子类类型,结果是True
print(isinstance(c,bool)) # 输出变量c的类型是否是bool类型或者bool的子类类型,结果是False

执行以上程序会输出如下结果:

1
2
3
4
5
6
7
8
<class 'bool'>
<class 'bool'>
True
True
True
True
True
False

在数值上下文中(例如,当用作算术运算符时),False转为0,True为1。

例如:

1
2
3
4
5
6
t = True
f = False
n = 10

print(t + n)  # 输出 11
print(f + n)  # 输出 10

复数类型complex

复数由实数部分和虚数部分构成,可以用a + bj或a + bJ形式表示,其中a和b是浮点数。属性real可以获取实数部分的值,属性imag获取虚数部分的值。

例如:

1
2
3
4
5
c = 3+0.14j

print(type(c))
print(c.real)
print(c.imag)

执行以上程序会输出如下结果:

1
2
3
<class 'complex'>
3.0
0.14

复数的实部a和虚部b都是浮点型。

例如:

1
2
3
4
5
c = 3+0.14j

print(type(c))
print(type(c.real))
print(type(c.imag))

执行以上程序会输出如下结果:

1
2
3
<class 'complex'>
<class 'float'>
<class 'float'>

复数可以只有虚数部分,则实数部分是0.0。

例如:

1
2
3
4
5
c = 4j
print(c.real)
print(c.imag)
print(type(c.real))
print(type(c.imag))

执行以上程序会输出如下结果:

1
2
3
4
0.0
4.0
<class 'float'>
<class 'float'>

复数的实数和虚数都是浮点类型,所以可以带有下划线,但是不能紧跟在句点后面。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
a = 2_0 + 1_0j
b = .0_01j
c = 3.14_15_93j

print(a)
print(type(a))
print(b)
print(type(b))
print(c)
print(type(c))

执行以上程序会输出如下结果:

1
2
3
4
5
6
(20+10j)
<class 'complex'>
0.001j
<class 'complex'>
3.141593j
<class 'complex'>

转载请注明本网址。