数据类型
说明
什么是数据类型
数据类型是对数据的分类,例如:整数类型、浮点类型、字符串类型等等。
任何数据都有明确的数据类型,例如:18属于整数类型,'18'属于字符串类型,5.6属于浮点类型。
如何获取数据的数据类型
调用内置函数type可以获取数据的数据类型
a = '18'
b = 18
c = 5.6
d = 'Hello'
print(type(a))
print(type(b))
print(type(c))
print(type(d))
返回结果如下:
<class 'str'>
<class 'int'>
<class 'float'>
<class 'str'>
整型
整数具有不同进制的表示方式
- 10进制:默认的进制
- 2进制:0b开头
- 8进制:0o开头
- 16进制:0x开头
print(118) # 118
print(0b101101) # 45
print(0o155) # 109
print(0x96) # 150
整数转换为不同进制的字符串
通过调用内置函数将10进制整数转换为不同进制的字符串:
- bin():将10进制整数转换为2进制(binary)字符串
- oct():将10进制整数转换为8进制(octal)字符串
- hex():将10进制整数转换为16进制(hexadecimal)字符串
print(bin(115)) # 0b1110011
print(oct(115)) # 0o163
print(hex(115) # 0x73
运算符
什么是运算符
运算符是一种特殊的符号。通过运算符对相应数据类型的运算数进行运算。
常见的运算符
- 标准算术运算符
- 整数除运算符
- 取余运算符
- 幂运算符
- 布尔运算符
- 比较运算符
- 赋值运算符
标准算术运算符
标准算数运算符包括加减乘除四个运算符,分别为:+、-、*、/
print(3 + 5) # 8
print(7 - 2) # 5
print(3 * 2) # 6
print(3.2 / 8) # 0.4
整数除运算符
整数除运算符:// 对两个数值进行运算时,运算结果只保留整数部分。
print(13 // 8) # 1
print(8.2 // 2.7) # 3.0
取余运算符
取余运算符:% 表示整除后,多出来的部分,这部分就是余数。
print(13 % 8) # 5
print(8.2 % 2.7) # 0.09999999999999876
幂运算符
幂运算符用于实现幂运算,用两个**表示
print(13 ** 8) # 815730721
print(8.2 ** 2.7) # 293.29009851932244
内置函数pow也可以实现幂运算
print(pow(13, 8)) # 815730721
布尔运算符
布尔运算符用于对布尔值进行运算,运算结果仍然是一个布尔值
and
当两个运算数都为True时,运算结果才为True
print(True and True) # True
print(True and False) # False
print(False and False) # False
print(False and True) # False
or
只要有一个运算数为True,运算结果就为True。
print(True or True) # True
print(True or False) # True
print(False or False) # False
print(False or True) # True
not
用于对运算数取反。
print(not True) # False
print(not False) # True
赋值运算符和变量
变量
在Python中,一切皆为对象。变量相当于标签。
变量是没有数据类型的,只有对象才有数据类型,通常情况下,一个变量只引用一种数据类型的对象。
什么是赋值运算符
赋值运算符用=表示,=的左边是变量,=的右边是对象。
在某一时刻,一个标签只能贴在一个对象上,一个对象上可以贴上多个标签。
a = 11
print(a) # 11
a = 'Hello'
print(a) # Hello
链式赋值
如果想让多个变量同时引用同一个对象,可以使用链式赋值。
a = b = c = 11
print(a) # 11
print(b) # 11
print(c) # 11
参数赋值
可以在赋值运算符的左边添加其他运算符,从而实现参数赋值:
- a += b 相当于:a = a + b
- a -= b 相当于:a = a - b
- a *= b 相当于:a = a * b
- a /= b 相当于:a = a / b
- a //= b 相当于:a = a // b
- a %= b 相当于:a = a % b
比较运算符
比较运算符的作用
比较运算符用于比较两个运算符,比较结果是一个布尔值。
比较运算符包括:
- <:小于
- <=:小于等于
- >:大于
- >=:大于等于
- ==:用于比较两个运算数是否相等,用于“相等性”测试。
- !=:不等于
- is:用于比较两个运算数是否是同一个对象,用于“同一性”测试。
- is not:不是同一对象
print(3 < 5)
print(3 <= 5)
print(5 > 3)
print(5 >= 3)
print(5 == 5.0)
print(5 != 5.0)
a = b = [1, 2, 3]
c = [1, 2, 3]
print(a == b)
print(a == c)
print(a is b)
print(a is c)
返回结果如下:
True
True
True
True
True
False
True
True
True
False
不可变类型对象的is比较
对于不可变类型的对象,其内存可能会被重用,比如数值较小的整数对象。
可以通过内置函数id进行验证,内置函数id用于返回对象的唯一标识(对象在内存中的地址)。
a = 15
b = 15
print(id(a)) # 2266793378480
print(id(b)) # 2266793378480
print(a is b) # True
链式比较
age = 18
# 相当于print(0 < age and age < 100)
print(0 < age < 100) # True
# 相当于print(1 == 2 and 2 < 3)
print(1 == 2 < 3) # False
关键字和标识符
关键字
关键字就是Python语言定义的、具有特殊用途的词。
通过内置函数help()可以查看所有关键字。
通过导入模块keyword并使用keyword.kwlist可以查看所有关键字。
import keyword
# 输出是一个list
print(keyword.kwlist)
标识符
标识符就是给程序中的变量、函数、方法、类命名的名字。
标识符的命名规则:
- 区分大小写
- 不能是关键字
- 不能以数字开头
- 不能包含空格、制表符、数学符号、中划线、箭头等
推荐的命名规范:
- 见名知意,有一个或多个有意义的单词组合
- 所有单词全部小写,单词之间用下划线进行分隔
对象None
用于表示数据值的不存在。
对象None是占据内存空间的,并不是空或没有定义。
对象None主要用于变量的初始化或者将变量重置为“数据值不存在”的状态。
a = None
print(a) # None
print(type(a)) # <class 'NoneType'>
运算符的优先级
每个运算符都有固定的优先级。
当表达式中包含优先级不同的运算符时,高优先级的运算符先参与运算。
优先级如下:
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is 、is not | 身份运算符 |
in 、not in | 成员运算符 |
not and or | 逻辑运算符 |
对于包含多个运算符的复杂表达式,可以通过如下两种方式来提高可读性:
- 在复杂表达式中使用小括号来指定运算顺序。
- 将复杂表达式拆分成几步来完成。