首页 Python 入门 - 3 - 数据类型
文章
取消

Python 入门 - 3 - 数据类型

数字(int, float)

Python 中的整数和数学上的整数一样,但是跟 Python2 和 C 语言相比不同的是,Python3 中的整数没有 短整型(int)长整型(long) 的区别,即 int 直接相当于 Python2 和 C 语言中的 长整型(long) 类型。

Python 中的 浮点数(float) 则相当于数学上的小数。叫做浮点数是由于在计算机中小数的表示方法有 浮点表示定点表示 的区别,浮点表示即小数点的位置可变,比如 1.23 也可以表示为 0.123e1。关于浮点数可以参考《浮点数的二进制表示》。

四则运算:

1
2
3
4
5
6
7
## 加减乘除
>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4  # 除法运算结果始终为浮点数
5.0

取余和幂运算:

1
2
3
4
5
6
>>> 17 % 3  # 取余
2
>>> 2 ** 3  # 幂运算
8
>>> pow(2, 3)  # 也可以适用内置函数 pow 进行幂运算
8

地板除法(floor division):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> 11 // 4  # 地板除运算符(//)的结果将会向负无穷的方向取整
2
>>> -11 // 4  # -2.75 向负无穷的方向取整结果为 -3
-3

## math.floor 方法和 // 运算符结果一样
>>> import math
>>> math.floor(2.75)
2
>>> math.floor(-2.75)
-3

## math.ceil 则是向正无穷方向取整
>>> math.ceil(2.75)
3
>>> math.ceil(-2.75)
-2

int 和 float 混合运算时的规则:在数值范围表示上 int < float,所以 int 相对于 float 来说是窄类型(narrower),float 相对 int 来说是宽类型,在混合运算或比较时,窄类型会转换为宽类型进行计算,所以最终结果也是宽类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## 窄类型 int 转换为宽类型 float 进行计算
>>> 2 + 2.0
4.0
>>> 2.0 - 1
1.0
>>> 2.0 * 3.0
6.0
>>> 2 ** 3.0
8.0
>>> 17 % 3.0
2.0

## 窄类型 int 转换为宽类型 float 进行比较
>>> 1 == 1.0
True
>>> [1, 2] == [1.0, 2.0]
True

字符串(str)

字符串的 单引号 表示形式:

1
2
3
4
5
6
>>> print('I am a string')
I am a string
>>> print('I\'m a string')  # 单引号中如果要包含单引号,需要用反斜杠(\)转义
I'm a string
>>> print('I am a "string"')  # 单引号中可以包含双引号(")
I am a "string"

字符串的 双引号 表示形式:

1
2
3
4
5
6
>>> print("I am a string")
I am a string
>>> print("I am a \"string\"")  # 双引号中如果要包含双引号,需要用反斜杠(\)转义
I am a "string"
>>> print("I'm a string")  # 双引号中可以包含单引号(')
I'm a string

字符串的 三引号 表示形式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> print('''I am a string''')  # 三个单引号形式
I am a string
>>> print("""I am a string""")  # 三个双引号形式
I am a string
>>> print('''I'm a "string"''')  # 三引号中既可以包含单引号,也可以包含双引号
I'm a "string"

## 三引号中可以包含多行
print('''I am first line
I am second line''')
I am first line
I am second line

## 三引号中可以在行尾添加反斜杠(\)表示不换行
print('''I am first line, \
I am still first line''')
I am first line, I am still first line

字符串的 raw 表示形式:

1
2
3
4
5
6
7
>>> print(' first line \n second line')  # \n表示换行
 first line
 second line

## 添加r前缀的字符串表示把反斜杠(\)当作普通字符,而不是转义符
>>> print(r' first line \n still first line')  
 first line \n still first line

字符串可以用 + 进行拼接:

1
2
>>> print('Py' + 'thon')
Python

字符串也可以用 空格 进行拼接:

1
2
3
4
5
6
7
8
>>> print('Py' 'thon')
Python
>>> s = 'thon'
>>> print('Py' s)  # 不能用空格连接变量字符串
  File "<stdin>", line 1
    print('Py' s)
               ^
SyntaxError: invalid syntax

字符串可以用 * 进行重复:

1
2
>>> print('w' * 3)
www

字符串可以用列表索引截取:

1
2
3
4
5
6
7
>>> s = 'Python'
>>> s[0]
'P'
>>> s[-1]
'n'
>>> s[0:2]  # 切片(slice),切片将在后续章节进一步讲解
'Py'

布尔(bool)

Python 中的布尔值使用 TrueFalse 表示(注意区分大小写),布尔运算符分别为 andornot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## and 运算符
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> 5 > 3 and 3 > 1
True

## or 运算符
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> 5 > 3 or 1 > 3
True

## not 运算符
>>> not True
False
>>> not False
True
>>> not 1 > 2
True

Python 中的 bool 类其实是从 int 类继承实现的,TrueFalse 分别是 10

1
2
3
4
>>> ['a', 'b'][True]
'b'
>>> ['a', 'b'][False]
'a'

空(None)

空值(None)在 Python 中是一个特殊值,与 JAVA 中的 null 相同,None0 是不相同的,0 是一个 int类型的,是有值的。

如果一个函数没有 return 语句,那么默认就会返回 None

参考资料

  • [Numbers] : https://docs.python.org/3.5/tutorial/introduction.html#numbers
  • [数据类型和变量] :https://www.liaoxuefeng.com/wiki/1016959663602400/1017063826246112
本文由作者按照 CC BY 4.0 进行授权