在介绍 Python 的变量及数据类型前,我们还需要了解 Python 中的保留字和标识符。
保留字:有些单词在 Python 中被赋予了特殊的含义,这些单词在对象命名时都不能使用。
# 查看Python中的保留字
import keyword
print(keyword.kwlist)
# 保留字列表
'''['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async',
'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while','with','yield']'''
标识符:给变量、函数、类、模块和其他对象起的名字。
命名规则:字母、数字、下划线,严格区分大小写,不能以数字开头,不能以保留字命名。
1. 变量的定义和使用
变量就是一个带标签的盒子,可以把需要的数据放进去,其由三部分组成:
标识:表示对象所存储的内存地址,可以使用内置函数 id() 来获取;
类型:表示对象的数据类型,可以使用内置函数 type() 来获取;
值:表示对象存储的具体数据,可以使用 print() 函数来输出打印。
name = "michael"
print(name, id(name), type(name))
'''name是变量名,可以自定义;
“= ”是赋值运算符,它可以将值赋给变量;
"michael"这个字符串就是值'''
# 输出结果
michael 2623526618800 <class 'str'>
变量,之所以叫变量,其是可以被改变的。当多次赋值后,变量名会指向新的空间。
name = "michael"
print(name, id(name), type(name))
# 给name重新赋值
name = "jackson"
print(name, id(name), type(name))
# 输出结果
'''可以发现,name变量的内存地址改变了,证明它指向了新的空间,
并与原来的地址断开连接,原来的内存地址也会成为内存垃圾'''
michael 2787167717040 <class 'str'>
jackson 2787163459952 <class 'str'>
2. Python 的数据类型
整数类型:int(98)
浮点数类型:float(3.14)
字符串类型:str("michael jackson")
布尔类型:bool(True、False)
a = 98
b = 3.14
c = "michael jackson"
d = True
# 打印数据类型
print(type(a), type(b), type(c), type(d))
# 输出结果
<class 'int'> <class 'float'> <class 'str'> <class 'bool'>
2.1 整数类型
英文为 integer,简写为 int,可以表示正数、负数和零。
整数的不同进制表示方式:
进制 | 基本数 | 表示方法 | 实例 |
---|---|---|---|
十进制(默认) | 0、1、2、3、4、5、6、7、8、9 | 默认表示 | 118 |
二进制 | 0、1 | 以0b开头 | 0b111010 |
八进制 | 0、1、2、3、4、5、6、7 | 以0o开头 | 0o116 |
十六进制 | 0、1、2、3、4、5、6、7、8、9 A、B、C、D、E、F |
以0x开头 | 0x76 |
a = 118
b = 0b111010
c = 0o116
d = 0x76
print(a, b, c, d)
# 输出结果
118 58 78 118
2.2 浮点数类型
由整数部分和小数部分组成。
储存不精确性:使用浮点数类型进行计算时,可能出现小数位数不确实的情况。
e = 3.1415
print(e, type(e))
n1 = 1.1
n2 = 2.2
print(n1+n2)
'''浮点数计算有不确定性,所以我们需要引入Decimal库'''
from decimal import Decimal
print(Decimal("1.1")+Decimal("2.2"))
# 输出结果
3.1415 <class 'float'>
3.3000000000000003
3.3
2.3 字符串类型
又称为不可变字符序列,可以使用单引号、双引号来定义(必须在一行),也可以使用三引号来定义(可以多行)。
str1 = "michael"
str2 = 'jackson'
str3 = '''michael
jackson'''
print(str1, type(str1))
print(str2, type(str2))
print(str3, type(str3))
# 输出结果
michael <class 'str'>
jackson <class 'str'>
michael
jackson <class 'str'>
2.4 布尔类型
用来表示真或假的值,真为 True,假为 False。
布尔值也可以转化为整数,True ---> 1,False ---> 0。
f1 = True
f2 = False
print(f1, type(f1))
print(f2, type(f2))
print(1+f1)
print(1+f2)
# 输出结果
True <class 'bool'>
False <class 'bool'>
2
1
3. 数据类型转换
将不同数据类型的数据拼接在一起。
函数名 | 作用 | 注意事项 | 实例 |
int() | 将其他数据类型转化为整数 | 1. 文字和小数无法转化为整数 2. 浮点数转化为整数,抹零 |
int("123") int(9.8) |
float() | 将其他数据类型转化为浮点数 | 1. 文字无法转化为浮点数 2. 整数转化为浮点数,末尾加 .0 |
float("9.9") float(9) |
str() | 将其他数据类型转化为字符串 | 也可以用引号转换 | str(123) "123" |
a1 = "michael"
a2 = 18
a3 = 98.5
print("我叫"+a1+",今年"+str(a2)+"岁,我的成绩是"+str(a3))
print(type(a1), type(a2), type(a3))
print(type(str(a2)), type(int(a3)))
# 输出结果
我叫michael,今年18岁,我的成绩是98.5
<class 'str'> <class 'int'> <class 'float'>
<class 'str'> <class 'int'>