type
status
date
slug
summary
tags
category
icon
password
python学习
1、变量与字符串:
命名规则:可以使用字母数字及下划线,但是不能以数字开头,python3已支持中文命名
字符串:可以使用 ’ ’ “ “ ’‘’ ‘’‘ 三种类型 转义字符,在引号前面加/ 进行转义,或者使用固定的 /n 等等
原生字符,可以在引号前加 r 代表不使用转义字符意思
2、导入模块及模块介绍:
伪随机数攻击:
随机数的生成是有种子生成,而大多数的种子是当前系统的时间当做种子数,因此可以通过获取这个种子来进行伪随机数攻击,使用random.getstate()函数。例如:
3、数字类型
数字类型有整形,浮点型,在python中,对于浮点型·的计算有时候会产生误差,比如在python中,0.3 < 0.1 + 0.2 这在比较中就会产生误差,因此要进行规避,使用函数进行精确计算,例如:
4、数字的运算
5、逻辑运算符:
and or not 结果是影响运算的数据
3 and 4 ===》 4
3 or 4 ====》 3
0 and 3 ====》0
优先级:越往下,优先级越高
6、分支与循环:
分支:
if if ...else if ... elif if ... elif ....else
循环:
while for
continue 与 break 的区别:
continue是跳出本次循环的结果,不执行这次的运行,回到循环体的开头进行下一次循环;
break则是直接跳出循环体,不再执行循环结构,循环结束。
但是两者只能作用于一层循环体
while 与 else 的配合,例如:
for循环的使用:
for 变量 in 可迭代对象:
通常与之配合的,range() 函数,比如:
range(stop) range(start,stop) range(start,stop,step)
或者是一个字符串
for each in "XiaoWaaa":
print(each)
7、存储类型:
1、列表:
列表可以容纳多种类型的数据,相邻数据之间使用 , 分隔,并且用 [] 进行包含,例如: [1,2,3,4,5] [1,2,3,4,"字符串"] 这两个都是列表;
切片:
列表的重要功能,可以一次取出多个列表中的数据值,写作方式: list[开始索引:结束索引:step],如要倒序输出,则可以[::-1]
增加:
列表如果要增加元素,可以通过append()方法进行追加,但是append()方法一次只能添加一个元素,例如: list.append(5)
如果要一次追加多个元素们可以使用extend()方法,可以一次追加一个可迭代对象,例如: list.extend([7,8,9])
如果在任意位置进行添加数据,则可以使用insert()方法,具体使用:
list.insert(要插入的位置索引,要插入的元素)
list.insert(1,2)
删除:
列表如果要删除元素,可以使用remove()方法,删除指定的元素,比如删除列表中的5,则可以使用list.remove(5),如果元素不存在,责护报错
如果要删除指定位置的元素,则可以使用pop方法,具体使用如下:list.pop(3),删除索引值为3的元素
如果要清空列表的值,则可以使用clear()方法,具体使用如下:list.clear()
修改:
列表如果要修改元素的值,可以使用下表索引的方法进行修改,比如list[2]=5,就将列表第三个元素修改为5
列表如果要一次修改多个元素的值,可以使用分片的方法进行修改,比如list[3:]=[4,5,6],就是将第四个元素之后的全部元素替换成4 5 6
列表修改的其他功能还有排序功能,可以使用sort()方法进行排序,使用方法:list.sort(),进行升序排序,降序方法可以在sort方法中进行插入值,如list.sort(reverse=True)逆序的功能使用**reverse()**方法进行,如list.reverse();
查找:
查找元素出现的次数:count()方法,例如list.count(3),查找元素中3出现的次数
查找元素的下标值,使用index()方法。例如,list.index(2),查找元素为2的第一次出现的下标索引值,同时,index方法还有一些参数可以添加,比如:index(元素,start,stop)
复制列表,使用copy()方法,list_copy=list.copy(),将list列表复制到list_copy中
二维列表:
访问二维列表:
创建:
正确的创建:
错误的创建:
使用错误的创建,会导致修改一处数据使得全部的数据都会被修改
可以使用 is 运算符检测是不是数据相同:
所以两者的指向是相同的,就相当于x 与 y 都是指向一个地址,夙愿修改一处就相当于把地址处的数据进行修改,所以修改数据会同时修改,所以如果要只修改一处代码,就该进行深拷贝,这就用到copy模块中的deepcopy () 函数,其中copy函数是浅拷贝,效率更高,但是浅拷贝完是一体的,所以就使用deepcopy函数。
deepcopy函数的图示:
使用方法:
列表推导式:
结构形式:
[要进行的操作 for target in 可迭代对象] (基础形式)
[循环体 for target in 可迭代对象 if condition]
2、元组:
元组使用()表示,是一个不可修改的类型,同时元组里面也可以存在多种类型的数据,如: (1,,2,3,[4,5,6],‘XiaoWaaa’),只有元组里面有可修改的类型,如列表,那么才可以进行修改;
元组的查找,和列表相同,支持count和index查找;
元组的打包和解包:(任何类型都一样)
将多个元素放在一起叫做打包,将数据分别分给其他变量叫做解包如:
3、字符串:
不可变类型
大小写字母变换:
1、capitalize
作用是将字符串的首字母大写,其他变成小写,如下;
2、casefold
作用是将字符串的所有字母变成小写,但是casefold的处理范围不局限于英语,德语也可以
3、title
作用是将字符串的所有字母的首字母变成大写,剩余字符全部变成小写
4、swapcase
作用是将字符串的所有字母进行大小写转换
5、upper
作用是将所有的字母变成大写
6、lower
作用是将所有的字符转换为小写,局限于英语字母变小写
左中右对齐:
1、居中对齐center
格式:center(width,fillchar='')
后面那个参数是用什么填充,默认是空格
2、左对齐ljust
格式:ljust(width,fillchar='')
3、右对齐rjust
格式:rjust(width,fillchar='')
4、zfill
格式 zfill(width),一般是做报表进行格式统一的
查找:
1、count
格式:count(查找的字符串,起始位置,末位置)
作用是查找字符出现的次数
2、find方法
格式:find(查找的字符串,起始位置,末位置)
作用:查找字符出现的下边,如果查询不到要查询的字符便会输出-1
3、rfind方法
格式:find(查找的字符串,起始位置,末位置)
作用是:从右往左查找下标
4、index方法
作用和find方法一样,但是如果查询不到要查询的字符,便会抛出异常
替换:
1、expandtabs(nums)
将tab转换为空格,实现统一,参数是指将tab键转换为几个空格:
2、replace(old,new)
是指将old转换为new的字符
3、translate()
首先使用str.maketrans()作为转换法则
去除:
1、lstrip() 和 rstrip():去除括号内的指定字符
2、removeprefix() 和 removesuffix():去除口号内的指定字符串
拆分:
partition() 和 rpartition() 和 split() 和 rsplit() 和splitlines()
前两者是生成一个字符串,后二者是生成一个列表,最后是根据换行符\n \r 进行拆分
拼接:
join()
格式化字符串:
format() 作用就是先给变量占个位
F-string:
在字符前加上f或者F便可以省略format函数
序列:
是列表元组和字符串的总称
1、is 检测序列的id值是否相同,id相当于C语言的地址
2、in 检测是否有包含关系
3、del 删除的作用,类似于切片和clear,但是del是彻底删除
4、转换:list tuple str
5、比大小,min 与 max
6、len 和 sum
7、排序:sorted 和 reversed
用法一致,但他们与sort有着区别
sorted函数是不改变原来的列表,但是sort改变原来列表
reversed返回的是一个反向迭代器
8、all 和 any
all判断可迭代对象元素是不是都为真,any判断是不是存在元素为真的元素
9、enumerate
10、zip
11、map(函数,可迭代对象)
12、filter(判断函数,可迭代对象)
作用是将判断正确的函数的值输出出来
13、iter 将可迭代对象转换为迭代器,迭代器只能使用一次,可迭代对象可以使用多次
next是每次提取一个迭代器中的值,最后提取完便会抛出异常
4、字典:
格式:{键:值}
创建:
六种创建字典的方式:
快速创建一种值相同的字典:
增删改查:
setdefault函数作用是查找是否有这个键值对,如果没有就加入键值对
关键函数:
items keys values
分别是显示字典键值对 字典的键 字典的值
字典有存在浅拷贝,即copy函数
in 和 not in 函数
判断是否在字典中
嵌套字典:
字典推导式:
5、集合
集合中所有的元素都是唯一且无序的
构造:
集合的操作:
集合的姐妹:
frozenset()与set()
其中,set方法是可以进行增加和删除的,但是frozenset方法是不可变的
增删改查:
下面的操作都改变了集合的数据
只有不可变的迭代对象才能作为集合和字典的键的元素
函数:
函数使用def 函数名() 的格式
参数设置:
1、默认参数应该放在后面;
2、参数可以通过关键词参数和位置参数进行;
3、可以通过使用 / * 表示是否强制使用关键词参数:
*后面是必须强制使用关键词参数
/前面必须强制使用位置参数,
4、收集参数,如果不确定参数的数量时使用,通过在参数前面加*表示:
5、一个*号得到的是元组,使用两个**号得到字典:
作用域:
1、global 可以将使局部变量变为全局变量
2、nonlocal 可以使局部变量覆盖全局变量
闭包:
对于嵌套函数,如果 return 函数,则可以在外部引用嵌套函数
装饰器:
装饰器的实际就是闭包和传递函数的结合
就是有了 @函数名 这个结构,使得可以不用再向上面那样通过引入一个变量来接受这个返回的函数,而是在调用test函数时,自动完成上面的那三个外层函数,修饰器是自下而上的调用
lambda表达式:
格式: lambda 变量:表达式
生成器:
使用 yield
生成器相当于一个迭代器,但是与迭代器又有着区别,生成器每次都可以取一个数值,但是不能通过下标进行索引,可以使用next进行取值,生成器每次只生成一个数据
生成器的设置:
1、将函数的return替换为yield
2、使用生成器推导式(与列表推导式有异曲同工之处)
使用生成器输出斐波那契数列:
函数文档、类型注释、内省
上面代码的意思是:
我希望s的格式可以使list形式,n的形式可以是整数型,得到的结果可以是列表格式,而且也可以设置默认值
内省:
就是通过 _ 操作_ 来表示,输出其操作的结果
高级函数:
可以理解为已经内置好的函数,需要引入模块使用的函数
永久存储:
1、建立
函数原型:
open(file,mode=’r',buffering=-1,encoding=None,error=None)
文件的打开与建立:
文件的存储与写入:
如果不执行close操作,那么在txt里面看不到你输得数据,同时该文件会存储到你的python目录中
2、路径:
使用pathlib模块函数:
3、with语句:
可以自动关闭程序,并且可以使程序在出错后依然可以保存写入的数据
可见,尽管代码出错,但是依旧可以存入数据,但是只能处理出错代码前的数据
他依旧会报错,但是他没有存入数据
pickle模块:
dump 与 load 函数
使用dump将数据转换为2进制数据
使用load函数,将2进制函数转换实际数据,进行解包
异常:
格式:
try语句
例如:当try里面的语句执行错误·的时候,就会抛出except里面的异常,如果try没有错误,那么就正常输出结果,不再执行except语句
也可以明确某种错误类型,如果错误不是这种类型,那么便不会再执行except,而是直接爆出错误
也可以使用多个except进行判断:
可以搭配 try: except: else: 或者:
try: except: efinally:/try finally 搭配
欠着表示,如果try语句正确,那么就输出结果,并且执行else语句
后者表示:无论try语句正确与否,都会执行finally语句
raise语句:
用于自爆错误:
assert语句:
用于代码调试,如果结果与预期不一样,就会直接抛出错误:
- Author:xiaowaaa
- URL:https://www.xiaowaaa.asia//article/aa93943c-5831-4584-9beb-b6ff208b04d7
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts