一、保留字(关键字)

保留字(关键字)含义: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.提示

  • 不要自定义名字和关键字重名,一旦覆盖,对应语法功能直接失效;

  • 除了关键字,还有内置函数名(如printinput)也尽量不要当作变量名。

二、变量与常量

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 接收的内容永远是字符串,计算前必须手动转数值类型。

更多推荐