保留字与标识符
保留字指在Python中被赋予特地意义的一些单词,在开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用。
以下是Python中的保留字:
and | as | assert | break | class | continue | def |
---|---|---|---|---|---|---|
del | elif | else | except | finally | for | from |
False | global | if | import | in | is | lambda |
nonlocal | not | None | or | pass | raise | return |
try | True | while | with | yield | await | async |
如何查询保留字?
import keyword
print(keyword.kwlist) # 获取保留字并打印
print(len(keyword.kwlist)) # 获取保留字的个数

Python标识符的命名规则
- 可以是字符(英文,中文)、下划线 "_" 和数字,并且第一个字符不能是数字。
- 不能使用 Python 中的保留字。
- 标识符严格区分大小写
- 以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符。
- 允许使用中文作为标识符,但不建议使用。
Python标识符的命名规范
- 模块名尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母。例如:
grame_main
。 - 包名尽量短小,并且全部使用小写字母,不推荐使用下划线。例如:
com.python
,不推荐使用com_python
- 类名采用单词首字母大写形式(Pascal风格)。例如:
MyClass
- 模块内部的类采用 "_" + Pascal 风格的类名组成,例如:在
MyClass
中的内部类_InnerMyClass
。 - 函数、类的属性和方法的命名,全部使用小写字母,多个字母之间使用下划线分割。
- 常量命名时采用全部大写字母,可以使用下划线。
- 使用单下划线 "_" 开头的模块变量或函数是受保护的,在使用 "
form xxx import *
" 语句从模块导入时,这些模块变量或函数不能被导入。 - 使用双下划线 "__" 开头的实例变量或方法是类私有的。
- 以双下划线开头和结尾的是 Python 的专用表示。例如:
__init__()
表示初始化函数。
Pascal风格
**[Pascal风格](https://www.baidu.com/s?sa=re_dqa_generate&wd=Pascal风格&rsv_pq=80c76b060004544c&oq=Pascal 风格&rsv_t=f42cG7imbJQh1SS5sxRmvgpUaOM4MQaA5bhxq1XfiVmdXfS2dGzW6KwskQW0yzD8DxeerAQ&tn=68018901_16_pg&ie=utf-8)**是一种命名规范,主要用于编程和软件开发中,特别是在C#等语言中。Pascal风格的命名规则是:当变量名和函数名称由两个或两个以上单词连接而成,构成一个唯一识别字时,采用这种命名法以增加变量和函数的可读性。具体规则如下:
- 单词之间的连接:单词之间不以空格断开或使用连接号(-)、下划线(_)连接,而是紧密相连。
- 首字母大写:每个单词的首字母都采用大写字母,例如:
FirstName
、LastName
。这种命名格式被称为“Pascal命名法”,也被称为“大驼峰式命名法”(Upper Camel Case),它是驼峰式大小写的子集。
Pascal风格是一种命名惯例,虽然并无绝对与强制的要求,但它被广泛采用以增加代码的可读性和一致性。在编程实践中,一旦选择了Pascal风格作为命名规则,就应保持在整个代码库中的一致性。此外,Pascal风格不仅适用于编程中的类名、函数名等标识符的命名,也广泛应用于其他需要清晰、易于理解的文本标识中,如品牌名、产品系列名等。
变量与常量
变量是保存和表示数据值的一种语法元素,可以简单的理解为是一种名字。
变量的语法结构:
变量名 = value
例:
luck_number = 8

从图中我们可以看出变量类似于,快递和取件码的关系。就是通过取件码找到对应的快递,变量也是一样的,通过变量名从内存中找到变量值。
变量的定义:
luck_number = 8 # 创建一个整形变量 luck_number,并为其赋值为 8
my_name = 'Lazy' # 字符串类型的变量
print('luck_number 的数据类型是:',type(luck_number)) # <class 'int'>
print(my_name,'的幸运数字是:',luck_number)
# Python 动态修改变量的数据类型, 通过赋不同的值,就可以直接修改
luck_number = 'beijing welcome you'
print('luck_number的数据类型是:',type(luck_number)) # <class 'str'>
#在 Python 中允许多个变量指向同一个值
no=number=1024 # no与number都指向了1024这个整数值
print(no,number)
print(id(no)) # id() 查看对象的内存地址的
print(id(number)) # no 和 number 都是一样的内存地址的
效果图:

变量命名应遵循以下几条规则
- 变量名必须是一个有效的标识符
- 变量名不能使用 Python 中的保留字
- 慎用小写字母I(挨)和大写字母O
- 应选择有意义的单词作为变量名
常量:
- 常量就是在程序运行过程中,其值不允许改变的量。
- 全部使用大写字母和下划线命名。
常量的定义:
pi=3.1415926 # 定义了一个变量
PI=3.1415926 # 定义了一个常量
数值类型
整数类型表示的数值是没有小数部分的数值,包含正整数、负整数和0
进制种类 | 引导符号 | 描述 |
---|---|---|
十进制 | 无 | 默认情况,例如:365、786 |
二进制 | 0b或0B | 由字符0和1组成,例如:0b10101,0B10101 |
八进制 | 0o或0O | 由字符0到7组成,例如:0o763,0O765 |
十六进制 | 0x或0X | 由字符0到9,a到f或A到F组成,例如:0x987A,0X987A |
例:
num=987 # 默认是十进制,表示整数
num2=0b10101 # 使用二进制表示整数
num3=0o756 # 使用八进制表示整数
num4=0x87ABF # 使用十六进制表示整数
print(num)
print(num2)
print(num3)
print(num4)
结果:

浮点数类型表示带有小数的数值,由整数部分和小数部分组成
注意事项:
两个浮点类型的数在进行运算时,有一定的概率运算结果后增加一些"不确定的"尾数
Python中的负数与数学中的复数形式完全一致,由实部和虚部组成
在Python中实数部分使用.real,虚数部分使用.imag表示
例:
height=187.6 # 身高
print(height)
print(type(height)) # type() 查看 height 这个变量的数据类型
x=10
y=10.0
print('x的数据类型:',type(x)) # int
print('y的数据类型:',type(y)) # float
x=1.99E1413
print('科学计数法:',x,'x的数据类型',type(x))
print(0.1+0.2) # 不确定的尾数问题 0.30000000000000004
print(round(0.1+0.2,1)) # 0.3
结果:

复数的类型:
复数的类型由实数部分和虚数部分组成
例:
x=123+456j
print('实数部分:',x.real)
print('虚数部分:',x.imag)
结果:

字符串类型
字符串类型连续的字符序列,可以表示计算机所能识别的一切字符。
字符串的界定符:单引号、双引号,三引号
转义字符 | 描述说明 |
---|---|
\n | 换行符 |
\t | 水平制表位,用于横向跳到下一个制表位 |
\" | 双引号 |
\' | 单引号 |
\\ | 一个反斜杠 |
原字符:使转义字符失效的字符,r或R
字符串类型与整数类型还有浮点数类型都是Python中的不可变数据类型。
city='天津'
address='天津市宝坻区香江大街3号'
print(city)
print(address)
# 多行字符串
info='''地址:天津市宝坻区香江大街3号
收件人:xxx
手机号:139xxxxxxxx
'''
info2="""地址:天津市宝坻区香江大街3号
收件人:xxx
手机号:139xxxxxxxx
"""
print(info)
print("-----------------------")
print(info2)

转义字符例:
print('北京')
print('欢迎你')
print('-------------')
print('北京\n欢迎你') # 遇到\n即换行,可以连续换多行
print('北\n京\n欢\n迎\n你')
print('----------')
print('北京北京\t欢迎你')
print('hello\toooo') # hello 是5个字符,一个制表位是8个字符 8-5=3
print('hellooooo')
print('老师说:\'好好学习,天天向上\'')
print('老师说:\"好好学习,天天向上\"')
# 原字符,使转义字符失效的符号 r 或 R
print(r'北\n京\n欢\n迎\n你')
print(R'北\n京\n欢\n迎\n你')

字符串又被称为有序的字符序列,对字符串中某个字符的检索称为索引

切片:
对字符中摸个子串或区间的检索称为切片
切片的语法结构:
字符串或字符串变量[N:M]
例:
#字符串的索引
s='HELLOWORLD'
print(s[0],s[-10]) # 序号0和序号-10表示的是同一个字符
print('北京欢迎你'[4]) # 获取字符串中索引为4
print('北京欢迎你'[-1])
print('---------------------')
# 字符串的切片
print(s[2:7]) # 从2开始到7结束不包含7 正向递增
print(s[-8:-3]) # 反向递减
print(s[:5]) # 默认从 0 开始,到5结束,不包含5
print(s[5:]) # 默认切到字符串的结尾

常用的字符串操作
操作符 | 描述说明 |
---|---|
x+y | 将字符串x与y连接起来 |
x*n或n*x | 复制n次字符串x |
x in s | 如果x是s的子串,结果为True,否则结果为False |
例:
x='2022年'
y='北京冬奥会'
print(x+y) # 连接两个字符串
print(x*5) # 对x这个字符串的内容复制5次
print(5*x)
print('北京' in y) # True
print('上海' in y) # false
布尔类型
用来表示 “真”值或"假"值的数据类型。
在Python中使用标识符"True"或"False"表示布尔类型的值"True"表示整数1,False表示整数0
布尔值为False的情况如下:
- False 或者是 None
- 数值中的 0,包含0,0.0,虚数0
- 空序列,包含空字符串,空元祖,空列表,空字典,空集合
- 自定义对象的实例,该对象的
_bool_()
方法返回Flase
或_len_()
方法返回 0
例:
x=True
y=False
print(type(x))
print(type(y))
print("x的值",x+10)
print("y的值",y+10)

测试对象的布尔值:
print(bool(18))
print(bool(0),bool(0.1))
print(bool(''))
print(bool("111"))
print(bool(False))
print(bool(None))xxxxxxxxxx7 1print(bool(18))2print(bool(0),bool(0.1))3print(bool(''))4print(bool("111"))5print(bool(False))6print(bool(None))print(bool(18))7print(bool(0),bool(0.1))
总结:
- 数字
- 非0的布尔值为 True
- 负数的布尔值为 False
- 字符串
- 空串的布尔值为 False
- 所有非空字符串的布尔值为 True
- None 的布尔值为 False
- False 的布尔值为 False
数据类型之间的转换
类型转换:
- 隐式转换
- 显式转换
函数 | 描述说明 |
---|---|
int(x) | 将x转换成整数类型 |
float(x) | 将x转换为浮点数类型 |
str(x) | 将x转成字符串 |
chr(x) | 将整数x转换为一个字符 |
ord(x) | 将一个字符x转换为其对应的值 |
hex(x) | 将一个整数x转换为一个十六进制字符串 |
oct(x) | 将一个整数x转换为一个八进制的字符串 |
bin(x) | 将一个整数x转换为一个二进制的字符串 |
例:
x=10
y=3
z=x/y # 隐式转换,通过运算符隐式的转了结果的类型
print(z,type(z))
# float 转成 int 类型,只保留整数部分
print('float类型转成int类型',float(z))
# 将int转成 float类型
print('int类型转成float类型',float(3))
# 将 str 转成 int 类型
print('str类型转成int类型',int('314'))
# 将字符串转成int或float时报错的情况
# print(int('19a')) # a 不是十进制的数 error
# print(float('3.1a')) # a不是float类型的数 error
# chr() ord() 互为相反操作
print('1在unicode所对应的值是:',ord('1')) # 1在Unicode表中所对应的值
print('134在unicode所对应的字符是',chr(134)) # 134整数在unicode表中所对应的字符是什么
# 进制之间的转换操作
print('十进制转成16进制:',hex(100))
print('十进制转成八进制:',oct(100))
print('十进制转成二进制:',bin(100))

eval
函数
- Python中的内置函数
- 用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符
eval()
函数经常和input()函数一起使用
eval
的语法格式
变量=eval(字符串)
例:
x='3.14+3'
print(x,type(x))
x=eval(x) # 使用 eval函数去掉单引号,改变了数据类型,执行了运算符
print(x,type(x))
# eval 函数经常与 input函数一起使用,用来获取用户输入的数据
age=eval(input('请输入您的年龄:'))
print(age,type(age))
height=eval(input('请输入您的身高:'))
print(height,type(height))
hello='zs'
print(eval('hello')) # 输出了 zs
print(eval('zs')) # error

算术运算符
:用于处理四则运算的符号+ | 加法 | 1+1 | 2 |
- | 减法 | 1-1 | 0 |
* | 乘法 | 2*3 | 6 |
/ | 除法 | 10/2 | 5.0 |
// | 整除 | 10//3 | 3 |
% | 取余 | 10%3 | 1 |
** | 幂运算 | 2**4 | 16 |
例:
print('加法:',1+1)
print('减法:',1-1)
print('乘法:',2*3)
print('除法(结果为浮点类型的数):',10/3)
print('整除:',10//3)
print('取余:',10%3)
print('幂运算:',2**4)
10/0等于多少?让我来用Python试试!
print(10/0)
报错了,divsion by zero
除零异常,在
算术运算符的优先级
第一级:**
第二级:*、/、%、//
第三级:+、-
赋值运算符
= | 简单的赋值运算 | x=y | x=y |
+= | 加赋值 | x+=y | x=x+y |
-= | 减赋值 | x-=y | x=x-y |
*= | 乘赋值 | x*=y | x=x*y |
/= | 除赋值 | x/=y | x=x/y |
%= | 取余赋值 | x%=y | x=x%y |
**= | 幂赋值 | x**=y | x=x**y |
//= | 整除赋值 | x//=y | x=x//y |
示例:
x=20
y=10
x+=y # 将x+y的值,赋值给 x
print('x的值是:',x)
x-=y # 将x-y的值,赋值给 x
print('x的值是:',x)
x*=y # 将x*y的值,赋值给 x
print('x的值是:',x)
x/=y #将x/y的值,赋值给 x, x的值发生了类型转换,x的值为 float
print('x的值是:',x,'x的类型是:',type(x))
x%=y #将x%y的值,赋值给 x,取余
print('x的值是:',x)
z=3
y//=2 # 整除,将2整除y的值,赋值给 y
print('y的值是:',y)
y**2 # y的二次幂,在赋值给 y
print('y的值是:',y)
Python支持链式赋值
a=b=c=100 # 相当于给 a、b、c同时赋值100
Python支持系列解包赋值
a,b=10,20 # 相当于执行了 a=10,b=20
利用系列解包赋值交换两个变量的值
a,b=b,a # 将b的值赋值给a,a的值赋值给b
比较运算符(关系运算符)
> | 大于 | 98>90 | True |
< | 小于 | 98<90 | False |
== | 等于 | 98==90 | False |
!= | 不等于 | 98!=90 | True |
>= | 大于或等于 | 98>=98 | True |
<= | 小于或等于 | 98<=98 | True |
示例:
print('98大于90吗?',98>90)
print('98小于90吗?',98<90)
print('98等于90吗?',98==90)
print('98不等于90吗?',98!=90)
print('98大于等于98吗?',98>=98)
print('98小于等于98吗?',98<=98)
逻辑运算符
and | 逻辑与 | 表达式1 and 表达式2 | 从左到右 |
or | 逻辑或 | 表达式1 or 表达式2 | 从左到右 |
not | 逻辑非 | not 表达式 | 从右到左 |
表达式1 | 表达式2 | 表达式1 and 表达式2 | 表达式1 or 表达式2 | not 表达式1 |
---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | True |
False | False | False | False | True |
False | True | False | True | True |
示例:
print(True and True)
print(True and True)
print(False and False)
print(False and True)
print('-'*40)
print(8>7 and 6>5)
print(8>7 and 6<5)
print(8<7 and 10/0) # 8<7 为 False,and 当第一个表达式结果为 False,直接出结果
print('-'*40)
print(True or True)
print(True or False)
print(False or False)
print(False or True)
print('-'*40)
print(8>7 or 10/0) # True,or 当左侧表达式结果为 True 时,右侧表达式不会被执行
print('-'*40)
print(not True)
print(not False)
print(not(8>7))

位运算符
把数字当作二进制数来进行计算的更多位运算符请参考 运算基础
运算符的优先级
() | 括号 |
** | 幂运算 |
~、+、- | 取反、正号、负号 |
*、/、%、// | 算术运算符 |
+、- | 算术运算符 |
<<、>> | 位运算符中的左移位和右移位 |
& | 位运算符中的按位与 |
^ | 位运算符中的异或 |
| | 位运算符在的按位或 |
<、<=、>、>=、!=、== | 比较运算符 |
总结:
⚠️保留字是 Python 已经被赋予特定意义的一些单词,保留字严格区分大小写。
⚠️标识符可用来给变量、函数、类、模块和其他对象命名。
⚠️标识符的命名规则:
- 可以是字母(包含中文)、数字、下划线、第一个字符不能是数字
- 不能是 Python 中的保留字
- 标识符严格区分大小写
- 以下划线开头的标识符有特殊意义,不能随便使用
- 允许使用中文作为标识符,但不建议使用
⚠️变量的语法结构:
- 变量名 = value
⚠️整数类型有四种表示形式:二进制、八进制、十进制、十六进制。
⚠️浮点数可以使用内置函数 round() 限定运算结果需要保留的小数位数。
⚠️字符串又称为不可变字符序列,可根据索引检索元素,也可根据索引进行切片操作。
⚠️布尔类型有两种取值 True 和 False。
⚠️常用的数据类型转换函数为 int()、float() 和 str()
⚠️内置函数 eval() 可拼接字符串转换成真实的数据类型
⚠️算术运算符:+、-、*、/、//、%、**
⚠️赋值运算符:= 、 += 、-= 、*= 、 /=、//= 、%=、**=
⚠️比较运算符:>、>=、<、<=、==、!=
⚠️逻辑运算符:and、or、not
⚠️位运算符:&、|、^、~、<<、>>