目录
一、保留字与标识符
1,保留字
保留字指的是在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 |
注意:保留字严格区分大小写
使用内置模块keyword来查询保留字。
import keyword
print(keyword.kwlist)
print(len(keyword.kwlist))#获取保留字的个数
运行结果:
['False', 'None', 'True', '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']
35
2,标识符
标识符就是一个名字,标识符的的命名规则:(必须遵守)
- 严格区分大小写
- 可以是数字、字母(大小写都可以)、下划线,第一个字符不能是数字
- 不能使用保留字
- 不建议用中文作为标识符
- 不建议以下划线开头
标识符的命名规范:
- 模块名尽量短小,全部小写,可以用下划线分割多个字母
- 包名尽量短小,全部小写,用.分隔,不推荐使用下划线
- 类名单词首字母大写,例如MyClass
- 模块内部的类采用‘_’+Pascal风格的类名组成,例如,在MyClass中的内部类_InnerMyClass
- 函数、类的属性和方法的命名,全部使用小写字母,多个字母之间使用下划线分隔
- 常量命名时采用全部大写字母,可以使用下划线
- 使用单下划线'_'开头的模块变量或函数是受保护的,在使用”from xxx import"语句从模块中导入时,这些模块变量或函数不能被导入
- 使用双下划线“__”开头的实例变量或方法是类私有的
- 以双下划线开头和结尾的是Python的专用标识,例如,__init_()表示初始化函数
二、常量和变量
1,变量
变量名 = value
栈内存 | 堆内存 |
变量名 | value |
在Python中,不同的变量可以指向同一个值
num = no = 2024
print(num,no)
print(id(num))#查看num变量的内存地址
print(id(no))
运行结果:
2024 2024
1784610477584
1784610477584
num和no的内存地址相同,说明指向的是同一个值,而不仅仅是二者数值上相等,是同一个。
三、数值类型
1,整数类型
整数类型表示的数值是没有小数部分的数值,包含正整数、负整数和0
整数类型是不可变数值类型
2,浮点数类型
浮点数类型表示带有小数点的数值,由整数部分和小数部分组成
浮点数可以用科学计数法来表示,后面加E
height = 187.6
print('height的数据类型是:',type(height))
x = 10
y = 10.0
print('x的数据类型是:',type(x))
print('y的数据类型是:',type(y))
x = 1.99E1413
print('科学计数法',x,'x的数据类型是:',type(x))
运行结果:
height的数据类型是: <class 'float'>
x的数据类型是: <class 'int'>
y的数据类型是: <class 'float'>
科学计数法 inf x的数据类型是: <class 'float'>
浮点数的计算会存在不确定的尾数问题,即计算不是非常精确
print(0.1+0.2)
print(round(0.1+0.2,1))
0.30000000000000004
0.3
这里的末尾00004就是不确定的尾数问题,可以使用round()函数来保留小数
浮点数也是不可变数据类型
浮点数中的复数与数学中的复数完全一致,由实部和虚部组成。实部用.real表示,虚部用.imag表示
x = 200+52j
print(x.real)
print(x.imag)
200.0
52.0
3,字符串类型
1,字符串
字符串类型是连续的字符序列,可以表示计算机所能识别的一切字符。
字符串的界定符:单引号、双引号、三引号
字符串类型也是不可变数据类型
定义多行字符串:三个单引号or三个双引号
address = '''北京市海淀区学院路
北京航空航天大学
自动化系'''
print(address)
北京市海淀区学院路
北京航空航天大学
自动化系
2,转义字符
转义字符 | 描述说明 |
---|---|
\n | 换行符 |
\t | 水平制表位,用于横向跳到下一个制表位 |
\" | 双引号 |
\' | 单引号 |
\\ | 一个反斜杠 |
3,原字符
原字符可以使转义字符失效, r或R
print('北京')
print('欢迎你')
print('北京\n欢迎你')
print('北\n京\n欢\n迎\n你')
print('北京\t欢迎你')
print('老师说:\'好好学习\'')
print(R'北\n京\n欢\n迎\n你')
北京
欢迎你
北京
欢迎你
北
京
欢
迎
你
北京 欢迎你
老师说:'好好学习'
北\n京\n欢\n迎\n你
4,字符串的索引和切片
索引是对字符串中某个字符的检索
切片是对字符串中某个子串或区间的检索,s[N,M]索引值从N开始,到M结束,不包括M
-10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
H | E | L | L | O | W | O | R | L | D |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
s = 'HELLOWORLD'
print(s[0],s[5])
print('北京欢迎你'[4])
print(s[0:2])
H W
你
HE
5,常用的字符串的操作
操作符 | 描述说明 |
x+y | 将字符串x和y进行连接 |
x*n或n*x | 复制n次字符串x |
x in s | 如果x是s的子串,结果为Ture;如果不是,结果为False |
x = '北京航空航天大学'
y = '自动化系'
print(x+y)
print(x*3)
print('大学' in x)
print('大学' in y)
北京航空航天大学自动化系
北京航空航天大学北京航空航天大学北京航空航天大学
True
False
4、布尔类型
布尔类型是用来表示”真“或”假“的数据类型,是不可变数据类型。True表示整数1,False表示整数0。
x = True
print(x)
print(type(x))
print(x + 10)
print(False + 10)
True
<class 'bool'>
11
10
测试对象的布尔值:
print(bool(7))
print(bool(0))
print(bool(0.0))
print(bool('北京欢迎你'))
print(bool(''))
print(bool(False))
print(bool(None))
True
False
False
True
False
False
False
布尔值为False的情况如下:
- None或者False
- 数值中的0,包含0,0.0,虚数0
- 空序列,包含空字符串、空元组、空列表、空字典、空集合(不是一个空格)
- 自定义对象的实例,该对象的_bool_()方法返回False或_len_()方法返回0
5,数据类型之间的转换
函数 | 描述说明 |
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#在进行除法运算的时候,将结果赋值给变量z
print(z,type(z))#通过除法运算,完成了隐式转换,将两个整型转换成浮点型
#将loat类型转换成int类型
print('float类型转换成int类型:',int(3.14))
print('float类型转换成int类型:',int(3.9))
print('float类型转换成int类型:',int(-3.14))
print('float类型转换成int类型:',int(-3.9))
#将int类型转成float类型
print('将int类型转成float类型:',float(7))
#将str类型转成int类型
print(int('100')+int('200'))
#将str类型转成int float类型时,不能包含字母
#将str类型转成int时,str所表示的数值必须是整数
#chr()和ord()的转换
print(ord('杨'))
print(chr(26472))
#十进制与其他进制之间的转换,转换之后的结果是一个字符串类型
print('十进制转成十六进制:',hex(26472))
print('十进制转成八进制:',oct(26472))
print('十进制转成二进制:',bin(26472))
3.3333333333333335 <class 'float'>
float类型转换成int类型: 3
float类型转换成int类型: 3
float类型转换成int类型: -3
float类型转换成int类型: -3
将int类型转成float类型: 7.0
300
26472
杨十进制转成十六进制: 0x6768
十进制转成八进制: 0o63550
十进制转成二进制: 0b110011101101000
四、函数
1,eval函数
eval()函数用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符串。
eval的语句格式:变量 = eval(字符串)
eval()函数经常与input()函数一起使用,用来获取用户输入的数值型。其中,input()的结果是字符串类型
s = '3.12+3'
print(s,type(s))
x = eval(s)#去掉字符串s的引号,执行加法运算
print(x,type(x))
#eval()函数与input()函数一起使用,用来获取用户输入的数值型
age = eval(input('请输入您的年龄:'))#字符串类型转成int类型,相当于int(字符串)
print(age,type(age))
height = eval(input('请输入您的身高:'))#字符串转成float类型,相当于float(字符串)
print(height,type(height))
hello = '北京欢迎你'
print(hello)
print(eval('hello'))
3.12+3 <class 'str'>
6.12 <class 'float'>
请输入您的年龄:24
24 <class 'int'>
请输入您的身高:187.2
187.2 <class 'float'>
北京欢迎你
北京欢迎你
但是,最后一行如果是”print(eval(hello))",程序就会报错。
五、运算符
1,算术运算符
运算符 | 描述说明 | 示例 | 结果 |
+ | 加法 | 1+1 | 2 |
- | 减法 | 1-1 | 0 |
* | 乘法 | 2*3 | 6 |
/ | 除法 | 10/2 | 5.0 |
// | 整除 | 10//3 | 3 |
% | 取余 | 10%3 | 1 |
** | 幂运算 | 2**4 | 16 |
2,赋值运算符
=
x+=y:将x+y的值赋值给x
x-=y:将x-y的值赋值给x
x*=y:
x/=y:这里,x的数据类型发生了类型变换
x%=y:
x//=y
Python支持系列解包赋值:
a,b = 20,30
print(a,b)
a,b = b,a
print(a,b)
20 30
30 20
3,比较运算符
运算符 | 描述说明 | 示例 | 展开形式 |
---|---|---|---|
> | 大于 | 98>90 | True |
< | 小于 | 98<90 | False |
== | 等于 | 98==90 | False |
!= | 不等于 | 98!=90 | True |
>= | 大于或等于 | 98>=98 | True |
<= | 小于或等于 | 98<=98 | True |
4,逻辑运算符
运算符 | 描述说明 | 用法 | 结合方向 |
and | 逻辑与 | 表达式1 and 表达式2 | 从左到右 |
or | 逻辑或 | 表达式1 or 表达式2 | 从左到右 |
not | 逻辑非 | not 表达式 | 从右到左 |
5,位运算符
将数值用二进制表示,相同位进行运算
1,按“位与”运算&
2,按“位或”运算|
3,按“位异或”运算^
4,按“位取反”运算~
5,“左移位”运算<<
左边(高位端)溢出的位被丢弃,右边(地位端)的空位用0补充
6,“右移位”运算>>
右边(低位端)溢出的位被丢弃,左边(高位端)的空位端,如果最高位是0(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1。
print('按位与运算:',12&8)
print('按位或运算:',4|8)
print('按位异或运算:',31^22)
print('按位取反',~213)
print('按位取反',~-213)
print('向左移动2位:',3<<2)#表示的是3向左移动两位,3*2*2
print('向左移动3位:',3<<3)#表示的是3向左移动三位,3*2*2*2
print('向右移动2位:',8>>2)#表示的是8向右移动2位,8/2/2
print('向右移动3位:',8>>3)#表示的是8向右移动3位,8/2/2/2
print('向右移动2位',-8>>2)#表示的是-8向右移动两位,-8/2/2
按位与运算: 8
按位或运算: 12
按位异或运算: 9
按位取反 -214
按位取反 212
向左移动2位: 12
向左移动3位: 24
向右移动2位: 2
向右移动3位: 1
向右移动2位 -2
六、运算符的优先级
有(),先算()
运算符 | 描述说明 |
** | 幂运算 |
~、+、- | 取反、正号、负号 |
*、/、%、// | 算术运算符 |
+、- | 算术运算符 |
<<、>> | 位运算符中的左移位和右移位 |
& | 位运算符中的按位与 |
^ | 位运算符中的异或 |
| | 位运算符中的按位或 |
<、<=、>、>=、!=、== | 比较运算符 |
= | 赋值运算符 |