Python 标识符、变量与基础数据类型
一、保留字(关键字)
保留字(关键字)含义:Python 语言预先定义好的单词,有特殊语法作用,不允许被用来当作变量名、文件名、函数名。
1.查看全部保留字
# 需要导入keyword模块
import keyword
# 打印所有关键字列表
print(keyword.kwlist)
# 获取保留字的个数
print(len(keyword.kwlist))
# 检测某个单词是否为关键字
print(keyword.iskeyword("if")) # True
print(keyword.iskeyword("name")) # False

2.关键字严格区分大小写

只有小写单词才是保留字,大写版本不再是关键字,可以用作变量名。
# if是关键字,不能做变量名
# if = 10 运行会直接报错
If = 10
IF = 20
print(If, IF) # 10 20
3.提示
-
不要自定义名字和关键字重名,一旦覆盖,对应语法功能直接失效;
-
除了关键字,还有内置函数名(如
print、input)也尽量不要当作变量名。
二、变量与常量
1.变量
变量本质:内存中一块空间,用来存储数据,变量名指向这个空间。Python 变量不用提前声明类型,直接赋值即可自动创建。
# 变量赋值
name = "张三"
age = 18
# 变量可以反复赋值,类型可以随时改变
age = "十八岁"
print(name, age) # 张三 十八岁
lucK_number= 6 # 创建一个整型变量 luck_number,并为其赋值为8
my_name = 'lhl'# 字符串类型变量
print('luck_number的数据类型是:',type(lucK_number))
print(my_name,'的幸运数字是:',lucK_number)
# python 可动态修改变量的数据类型,通过赋不同类型的值可以直接修改
lucK_number='520'
print('luck_number的数据类型是:',type(lucK_number))
# 在python当中允许多个变量指向同一个值
no=number=520 # no 和 number 都指向 520 这个整数值
print(no,number) # no 和 number 的内存地址一致
print(id(no)) # id() 用来查看对象的内存地址
print(id(number))

命名规则:
-
只能由字母、数字、下划线组成;
-
不能以数字开头;
-
严格区分大小写;
-
不能使用关键字;
-
推荐命名:下划线命名法
user_name或者小驼峰userName
2.常量
-
Python 没有真正不可修改的常量。
-
全部大写的变量视为常量,不允许修改。
# 常量(约定俗成,仅规范约束)
PI = 3.14159
MAX_NUM = 100
# 语法上依然可以修改,只能靠代码规范自律
三、数据类型
1.整数类型 int
整数的表现形式:
| 进制 | 书写格式 | 说明 |
|---|---|---|
| 十进制 | 直接写数字 | 默认写法,num = 20 |
| 二进制 | 以0b开头 |
num = 0b1010(对应十进制 10) |
| 八进制 | 以0o开头 |
num = 0o12(对应十进制 10) |
| 十六进制 | 以0x开头 |
num = 0xa(对应十进制 10) |
拓展:进制转换函数
bin(10) # 转二进制字符串 0b1010
oct(10) # 转八进制字符串 0o12
hex(10) # 转十六进制字符串 0xa
2.浮点数 float
①两种写法
# 普通小数
f1 = 3.14
# 科学计数法(适合超大/超小数)
f2 = 3.2e3 # 等价于 3.2 * 10^3 = 3200.0
f3 = 5e-2 # 等价于 5 * 10^-2 = 0.05 5*0.01=0.05
# 3.14 3200.0 0.05
②易错点
不确定尾数的类型:浮点数运算存在精度误差
print(0.1 + 0.2) # 输出 0.30000000000000004,不等于0.3
# 则可以使用 round()确定小数点的位数
print(round(0.1+0.2,1)) # 0.3
3.复数 complex
复数格式:实部 + 虚部j,j 代表虚数单位
c = 3 + 4j
print(c.real) # 获取实部 3.0
print(c.imag) # 获取虚部 4.0
print(type(c)) # <class 'complex'>
4.字符串 str
①写法
三种引号写法,作用一致:
s1 = '单引号字符串'
s2 = "双引号字符串"
s3 = '''三引号多行字符串
可以直接换行
'''
s4 = '''
三引号多行字符串
可以直接换行
'''
print(s1)
print(s2)
print(s3)
print('-----------')
print(s4)

小技巧:外层用双引号,内部可以直接写单引号,不需要转义。
②转义字符
| 转义符 | 作用 |
|---|---|
\n |
换行 |
\t |
制表符(空格缩进) |
\' |
输出单引号 |
\" |
输出双引号 |
\\ |
输出反斜杠本身 |
原始字符串 r 或 R"":关闭所有转义,原样输出内容
print(r'重庆\n') # 重庆\n
print(R'重庆\n',end='666') # 重庆\n666
③字符串索引与切片
字符串每个字符都有编号,从 0 开始正数,从 - 1 开始倒数
切片语法:字符串[起始:结束:步长)
-
左闭右开:取到结束下标前一位
-
起始省略 = 从头开始,结束省略 = 截取到末尾
s = "python"
print(s[0]) # p 第一个字符 截取索引为0的字符 正向切片
print(s[-1]) # n 最后一个字符 截取索引为-1的字符 反向切片
s = "abcdef"
print(s[1:4]) # b c d 正向切片,从索引为1的字符开始 到 索引为4的字符结束,不包括索引4字符
print(s[::-1]) # 步长-1,字符串反转
print(s[:4])# p y t 默认从 0 开始 到索引为 4 (不包括4)
print(s[2:])# t h o n 从索引 2 开始,到结束
print('重庆欢迎你'[4]) # 你 获取字符串索引为4的字符
④拓展补充
重要特性:字符串是不可变类型,无法直接修改其中某一个字符,只能生成新字符串。
text = "hello Python"
# 1. 字符串拼接 +
s = "hi" + "there"
print(s) # hithere
# 2. 重复 *
print("-" * 20) # 将 - 复制 20 遍 --------------------
print(3 * '6') # 将 6 复制三遍 666
# 3. 大小写转换
text.upper() # 全部大写
text.lower() # 全部小写
print('lhl'.upper()) # LHL
print('ZLY'.lower()) # zly
# 4. 去除两端空格
text.strip()
print(' 8520 '.strip()) # 8520
# 5. 分割字符串 split()
text.split(" ")
print('1,23,4,5,67,888'.split(',')) # ['1', '23', '4', '5', '67', '888']
# 6. 查找、替换
text.find("Python")
print('loveyrs'.find('lhl')) # 查找 -1
text.replace("Python", "Java")
print('zlyoveyrs'.replace('zly','lhl')) # lhloveyrs
重要特性:字符串是不可变类型,无法直接修改其中某一个字符,只能生成新字符串。
5.布尔类型 bool
只有两个值:True(真,对应数字 1)、False(假,对应数字 0)
a = True
b = False
print(1 + True) # 结果为2 说明 True 为 1
print(1 + False) # 结果为1 说明 False 为 0
布尔值主要用于条件判断、循环。
空值:None,代表什么都没有,不等于 False。
拓展:所有等价于 False 的数据
空字符串、0、0.0、空列表 []、空字典 {}、None 都会被判定为假,其余全部为真。
bool("") # False
bool(0) # False
bool(0.0) # False
bool("0") # True
print(bool(18)) # True
print(bool(0),bool(0.0)) # False False
# 总结 说明非零的整数的布尔值都是 True
print(bool('lh')) # True
print(bool('')) # False
# 总结 所有非空字符串的布尔值也为 True,空字符串的布尔值为 False
print(bool(True)) # True
print(bool(None))# False
print(bool(False))# False
四、总结
-
关键字不能做变量名,大小写不通用;
-
浮点数运算有精度误差,不要直接用
==对比两个小数; -
字符串不可修改,切片左闭右开,负数索引从末尾倒数;
-
input 接收的内容永远是字符串,计算前必须手动转数值类型。
更多推荐
所有评论(0)