Python基础语法
1、基本数据类型
Number(数字)
String(字符串)
bool(布尔类型)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
- Number(数字)、String(字符串)、Tuple(元组)为不可变数据
- List(列表)、Dictionary(字典)、Set(集合)为可变数据
1.1 运算符
1.1.1 算术运算符
+
加 - 两个对象相加
-
减 - 得到负数或是一个数减去另一个数
*
乘 - 两个数相乘或是返回一个被重复若干次的字符串
/
除 - x 除以 y
%
取模 - 返回除法的余数
**
幂 - 返回x的y次幂
//
取整除 - 往小的方向取整数
1.1.2 比较运算符
==
等于 - 比较对象是否相等
!=
不等于 - 比较两个对象是否不相等
>
大于 - 返回x是否大于y
<
小于 - 返回x是否小于y
>=
大于等于 - 返回x是否大于等于y
<=
小于等于 - 返回x是否小于等于y
1.1.3 赋值运算符
=
简单的赋值运算符
+=
加法赋值运算符
-=
减法赋值运算符
*=
乘法赋值运算符
/=
除法赋值运算符
%=
取模赋值运算符
**=
幂赋值运算符
//=
取整除赋值运算符
:=
海象运算符,这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。Python3.8 版本新增运算符
1.1.4 位运算符
&
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1
^
按位异或运算符:当两对应的二进位相异时,结果为1
~
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<<
左移动运算符:运算数的各二进位全部左移若干位,由"<<“右边的数指定移动的位数,高位丢弃,低位补0
>>
右移动运算符:把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数
1.1.5 逻辑运算符
x and y
布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值
x or y
布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值
not x
布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True
1.1.6 成员运算符
in
如果在指定的序列中找到值返回 True,否则返回 False
not in
如果在指定的序列中没有找到值返回 True,否则返回 False
1.1.7 身份运算符
is
判断两个标识符是不是引用自一个对象
is not
判断两个标识符是不是引用自不同对象
1.2 数据类型
1.2.1 Number(数字)
1.2.1.1 概述
数字数据类型用于存储数值
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间
1.2.1.2 类型
- int (整数), 如 1
- float (浮点数), 如 1.23、3E-2
- complex (复数), 如 1 + 2j、 1.1 + 2.2
1.2.1.3 数字类型转换
int(x)
将x转换为一个整数
float(x)
将x转换到一个浮点数
complex(x)
将x转换到一个复数,实数部分为 x,虚数部分为 0
complex(x, y)
将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式
1.2.1.3 常用函数
abs(x)
返回数字的绝对值,如abs(-10) 返回 10
ceil(x)
返回数字的上入整数,如math.ceil(4.1) 返回 5
floor(x)
返回数字的下舍整数,如math.floor(4.9)返回 4
max(x1, x2,...)
返回给定参数的最大值,参数可以为序列
min(x1, x2,...)
返回给定参数的最小值,参数可以为序列
modf(x)
返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x, y)
x**
y 运算后的值
round(x [,n])
返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数
choice(seq)
从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数
randrange ([start,] stop [,step])
从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random()
随机生成下一个实数,它在[0,1)
范围内
shuffle(lst)
将序列的所有元素随机排序
uniform(x, y)
随机生成下一个实数,它在[x,y]
范围内
pi
数学常量 pi(圆周率,一般以π来表示)
e
数学常量 e,e即自然常数(自然常数)
1.2.2 字符串(String)
1.2.2.1 概述
字符串是 Python 中最常用的数据类型,可以使用引号( ’ 或 " )创建字符串,用三引号(‘’’ 或 “”")创建多行字符串
字符串值不可更改
1.2.2.2 访问字符串中的值
可以使用方括号[]
来访问或截取,语法格式:str[start:end:setp]
其中 start(包含)是切片开始的索引,end(不包含)是切片结束的索引,step步长可省略
索引,从左往右以 0 开始,从右往左以 -1 开始
1.2.2.3 字符串运算符
+
字符串连接
*
重复输出字符串
[]
通过索引获取字符串中字符
[ : ]
截取字符串中的一部分,遵循左闭右开原则,str[0:2]
不包含第3个字符
in
成员运算符 - 如果字符串中包含给定的字符返回 True
not in
成员运算符 - 如果字符串中不包含给定的字符返回 True
r/R
原始字符串 - 所有字符串按照字面意思来使用,没有转义特殊或不能打印的字符。 使用时在字符串的第一个引号前加上字母 r(可以大小写)
%
格式字符串
1.2.2.3 字符串格式化
格式化操作符
*
定义宽度或者小数点精度
-
用做左对齐
+
在正数前面显示加号( + )
<sp>
在正数前面显示空格
#
在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0
显示的数字前面填充’0’而不是默认的空格
%
‘%%‘输出一个单一的’%’
- 使用
%
格式化
%s
格式化字符串
%d
格式化整数
%f
格式化浮点数字,可指定小数点后的精度,如:%.2f
例:print (“我叫%s,今年%d岁!”%(‘小明’, 10))
- 使用
.format
格式化
例1:print (“我叫{},今年{}岁!”.format(‘小明’, 10))
例2:print (“我叫{},今年{:.2f}岁!”.format(“小明”,10))
1.2.2.3 常用函数
capitalize()
将字符串的第一个字符转换为大写
count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
find(str, beg=0, end=len(string))
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在字符串中会报一个异常。
join(seq)
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
len(string)
返回字符串长度
lower()
转换字符串中所有大写字符为小写.
lstrip()
截掉字符串左边的空格或指定字符。
max(str)
返回字符串 str 中最大的字母。
min(str)
返回字符串 str 中最小的字母。
replace(old, new [, max])
把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
split(str="", num=string.count(str))
以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
startswith(substr, beg=0,end=len(string))
检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
strip([chars])
在字符串上执行 lstrip()和 rstrip()
title()
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
upper()
转换字符串中的小写字母为大写
1.2.3 bool(布尔类型)
即 True 或 False
1.2.4 List(列表)
1.2.4.1 概述
列表是最常用的 Python 数据类型,列表写在方括号 []
之间,元素用逗号隔开
列表的数据项不需要具有相同的类型
列表中的元素是可以改变的
1.2.4.2 访问列表中的值
可以使用方括号[]
来访问或截取,语法格式:str[start:end:setp]
其中 start(包含)是切片开始的索引,end(不包含)是切片结束的索引,step步长可省略
索引,从左往右以 0 开始,从右往左以 -1 开始
1.2.4.3 操作符
[1, 2, 3] + [4, 5, 6]
组合
['Hi!'] * 4
重复
3 in [1, 2, 3]
元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=" ")
迭代
1.2.4.4 常用函数和方法
del list[索引]
删除元素
len(list)
列表元素个数
max(list)
返回列表元素最大值
min(list)
返回列表元素最小值
list(seq)
将元组转换为列表
list.append(obj)
在列表末尾添加新的对象
list.count(obj)
统计某个元素在列表中出现的次数
list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)
将对象插入列表
list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)
移除列表中某个值的第一个匹配项
list.reverse()
反向列表中元素
list.sort( key=None, reverse=False)
对原列表进行排序
list.clear()
清空列表
list.copy()
复制列表
1.2.5 Tuple(元组)
1.2.5.1 概述
元组与列表类似,区别在于值不能修改
元组写在小括号 () 里,元素用逗号隔开
注意:元组只有一个元素时,需在元素后面添加逗号
1.2.5.2 访问元组中的值
可以使用方括号[]
来访问或截取,语法格式:str[start:end:setp]
其中 start(包含)是切片开始的索引,end(不包含)是切片结束的索引,step步长可省略
索引,从左往右以 0 开始,从右往左以 -1 开始
1.2.5.3 操作符
(1, 2, 3) + (4, 5, 6)
组合
('Hi!',) * 4
重复
3 in (1, 2, 3)
元素是否存在于元组中
for x in (1, 2, 3): print(x, end=" ")
迭代
1.2.5.4 常用函数
len(tuple)
计算元组元素个数
max(tuple)
返回元组中元素最大值
min(tuple)
返回元组中元素最小值
tuple(iterable)
将可迭代系列转换为元组
1.2.6 Set(集合)
1.2.6.1 概述
集合是一种无序、可变的数据类型,用于存储唯一的元素。集合使用大括号 {} 表示,元素之间用逗号分隔
用{}
或set()
创建集合,其中,空集合不能用{}表示
1.2.6.2 常用函数和方法
add()
为集合添加元素
clear()
移除集合中的所有元素
copy()
拷贝一个集合
discard()
删除集合中指定的元素
pop()
随机移除元素
remove()
移除指定元素
union()
返回两个集合的并集
update()
给集合添加元素
len()
计算集合元素个数
1.2.7 Dictionary(字典)
1.2.7.1 概述
字典是一个无序的 键(key) : 值(value) 的集合。其中,键(key)是唯一的
用{}
或dict()
创建字典
1.2.7.2 访问字典值
字典名[key]
新增或修改字典元素:字典名[key]=value
1.2.7.3 常用函数和方法
len(dict)
计算字典元素个数,即键的总数。
str(dict)
输出字典,可以打印的字符串表示。
type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
dict.clear()
删除字典内所有元素
dict.copy()
返回一个字典的浅复制
dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值
key in dict
如果键在字典dict里返回true,否则返回false
dict.items()
以列表返回一个视图对象
dict.keys()
返回一个视图对象
dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2)
把字典dict2的键/值对更新到dict里
dict.values()
返回一个视图对象
pop(key[,default])
删除字典 key(键)所对应的值,返回被删除的值。
popitem()
返回并删除字典中的最后一对键和值。
1.3 数据类型转换
int(x [,base])
将x转换为一个整数
float(x)
将x转换到一个浮点数
str(x)
将对象 x 转换为字符串
tuple(s)
将序列 s 转换为一个元组
list(s)
将序列 s 转换为一个列表
set(s)
转换为可变集合
dict(d)
创建一个字典。d 必须是一个 (key, value)元组序列
chr(x)
将一个整数转换为一个字符
ord(x)
将一个字符转换为它的整数值
hex(x)
将一个整数转换为一个十六进制字符串
oct(x)
将一个整数转换为一个八进制字符串
2、控制语句
2.1 条件语句
2.1.1 if
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
2.1.1 match…case
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>
2.2 循环语句
2.2.1 while
while condition:
statements
2.2.2 for
for <variable> in <sequence>:
<statements>
else:
<statements>
2.2.3 补充
- for循环结合range(start,end,step) 使用
for i in range(5)
for i in range(5,9)
for i in range(0, 10, 3) - 跳出循环
break跳出当前循环
continue跳出本次循环,继续下一次循环
2.3 推导式
2.3.1 列表(list)推导式
[表达式 for 变量 in 列表]
[表达式 for 变量 in 列表 if 条件]
2.3.2 字典(dict)推导式
{ key_expr: value_expr for value in collection }
{ key_expr: value_expr for value in collection if condition }
2.3.3 集合(set)推导式
{ expression for item in Sequence }
{ expression for item in Sequence if conditional }
2.3.4 元组(tuple)推导式
(expression for item in Sequence )
(expression for item in Sequence if conditional )
3、函数
3.1 函数
def 函数名(参数列表):
函数体
3.2 lambda(匿名函数)
lambda [arg1 [,arg2,.....argn]]:expression
4、其他
4.1 注释
单行注释:以 # 开头
多行注释:用三个单引号 ‘’’ 或者三个双引号 “”" 将注释内容括起来
4.2 导入模块
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
4.3 输入输出
print()
和input()
函数
4.4 读写文件
4.4.1 打开文件
open(filename, mode)
其中,mode决定打开文件的模式,默认文件访问模式为只读®,具体如下:
r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
4.4.2 文件读写
f.read([size])
读取指定数目的数据,为空读取全部数据
f.readline()
从文件中读取单独的一行
f.readline()
从文件中读取单独的一行
f.write(string)
将 string 写入到文件中, 然后返回写入的字符数
f.close()
关闭文件并释放系统资源
4.5 异常处理
4.5.1 try…except
try:
执行代码
except ValueError:
发生异常时执行的代码
4.5.2 try…except…else
try:
执行代码
except:
发生异常时执行的代码
else:
没有异常时执行的代码
4.5.3 try…except…else…finally
try:
执行代码
except:
发生异常时执行的代码
else:
没有异常时执行的代码
finally:
不管有无异常都会执行的代码
4.6 Python3标准库
- os 模块:与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。
- sys 模块:与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。
- time 模块:处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。
- datetime 模块:更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。
- random 模块:生成随机数的函数,例如生成随机整数、浮点数、序列等。
- math 模块:数学函数,例如三角函数、对数函数、指数函数、常数等。
- re 模块:正则表达式处理函数,可以用于文本搜索、替换、分割等。
- json 模块:JSON 编码和解码函数,可以将 Python 对象转换为 JSON 格式,并从 JSON 格式中解析出 Python 对象。
- urllib 模块:访问网页和处理URL,包括下载文件、发送 POST 请求、处理 cookies 等。