菜鸡总结三月二十三日
今日内容概要
常见内置函数
1.help()函数帮助我们了解模块、类型、对象、方法、属性的详细信息。
1、帮助查看类型详细信息,包含类的创建方式、属性、方法
2、帮助查看方法的详细使用信息(使用时要注意输入完整路径,使用模块帮助时,需要先导入模块)
2.id() id函数在作用于变量时,其返回的是变量指向的对象的地址。
3.int() 类型转换 机制转换
4.isinstance() Python中的 isinstance() 函数,是Python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似 type()。
5.pow ()幂指数 pow() 如果接收两个参数,如 pow(x, y),则结果相当于 x**y,也就是 x 的 y 次方 这里老师是没讲的我也是查看了一下资料 pow() 如果接收三个参数,如 pow(x, y, z),则结果相当于 (x**y) % z,也就是 x 的 y 次方再对 z 进行取余 print(pow(2,4,7)) #2
6.round() round(x,n)方法将返回x的值,该值四舍五入到小数点后的n位数字
print(round(7.6 + 8.7,1))
16.3 输出结果
round(8.875,2) # 第二个参数控制需要保留几位小数部分
8.88 输出结果
7.sum()求和
print(sum([11,2,2,3,4,3,2]))
输出 27 也就是说sum()最后求得的值 = 可迭代对象里面的数加起来的总和
分类 函数 作用
数学运算 abs 求数值的绝对值
divmod 返回两个数值的商和余数
max 返回可迭代对象中的元素中的最大值或者所有参数的最大值
min 返回可迭代对象中的元素中的最小值或者所有参数的最小值
pow 返回两个数值的幂运算值或其与指定整数的模值
round 对浮点数进行四舍五入求值
sum 对元素类型是数值的可迭代对象中的每个元素求和
类型转换 bool 根据传入的参数逻辑值,创建一个新的布尔值
int 根据传入的参数,创建一个新的整数
float 根据传入的参数,创建一个新的浮点数
complex 根据传入参数,创建一个新的复数
str 返回一个对象的字符串表现形式(给用户)
bytearray 根据传入的参数,创建一个新的字节数组
bytes 根据传入的参数,创建一个新的不可变字节数组
memoryview 根据传入的参数,创建一个新的内存查看对象
ord 返回Unicode字符对应的整数
chr 返回整数所对应的Unicode字符
bin 将整数转换成2进制字符串
oct 将整数转化成8进制数字符串
hex 将整数转换成16进制字符串
tuple 根据传入的参数,创建一个新的元组
list 根据传入的参数,创建一个新的列表
dict 根据传入的参数,创建一个新的字典
set 根据传入的参数,创建一个新的集合
frozenset 根据传入的参数,创建一个新的不可变集合
enumerate 根据可迭代对象创建枚举对象
range 根据传入的参数,创建一个新的range对象
iter 根据传入的参数,创建一个新的可迭代对象
slice 根据传入的参数,创建一个新的切片对象
super 根据传入的参数,创建一个新的子类和父类关系的代理对象
object 创建一个新的object对象
序列操作 all 判断可迭代对象的每个元素是否都为True值
any 判断可迭代对象的元素是否有为True值的元素
filter 使用指定方法过滤可迭代对象的元素
map 使用指定方法去作用传入的每个可迭代对象的元素,生成新的可迭代对象
next 返回可迭代对象中的下一个元素值
reversed 反转序列生成新的可迭代对象
sorted 对可迭代对象进行排序,返回一个新的列表
zip 聚合传入的每个迭代器中相同位置的元素,返回一个新的元组类型迭代器
对象操作 help 返回对象的帮助信息
dir 返回对象或者当前作用域内的属性列表
id 返回对象的唯一标识符
hash 获取对象的哈希值
type 返回对象的类型,或者根据传入的参数,创建一个新的类型
len 返回对象的长度
ascii 返回对象的可打印表字符串表现方式
format 格式化显示值
反射操作 vars 返回当前作用域内的局部变量,和其值组成的字典,或者返回对象的属性列表
isinstance 判断对象是否是类或者类型元组中任意类元素的实例
issubclass 判断类是否是另外一个类或者类型元组中任意类元素的子类
hasattr 检查对象是否含有属性
getattr 获取对象的属性值
setattr 设置对象的属性值
delattr 删除对象的属性
callable 检测对象是否可被调用
变量操作 globals 返回当前作用域内的全局变量,和其值组成的字典
locals 返回当前作用域内的局部变量,和其值组成的字典
交互操作 print 向标准输出对象打印输出
input 读取用户输入值
文件操作 open 使用指定的模式和编码打开文件,返回文件读写对象
编译执行 compile 将字符串编译为代码或者AST对象,使之能够通过exec语句来执行或者eval进行求值
eval 执行动态表达式求值
exec 执行动态语句块
repr 返回一个对象的字符串表现形式(给解释器)
装饰器 property 标示属性的装饰器
classmethod 标示方法为类方法的装饰器
staticmethod 标示方法为静态方法的装饰器
!这些是来自网上找的一些资料
可迭代对象
什么叫可迭代?
迭代:python中可以用for循环使用取值操作过程.
可迭代对象:可以使用for循环遍历的对象,我们称之为可迭代对象.
每一次迭代都需要依赖一个上次的游戏结果 比如我们常见的游戏更新就是版本的迭代
单纯的循环不是迭代 迭代取值类似于索引取值不过迭代取值是指向一个方向取完
l1 = [11, 22, 33, 44, 55]
n = 0
while n < len(l1):
print(l1[n])
n += 1
什么叫迭代对象?
内置有__iter__方法的都可以称之为是可迭代对象
我们可以理解为就是数据可以通过点的方式点出来__iter__
2.__iter__该类代码的读法>>>:双下iter方法
综上所述我们就可以找到哪些数据是可迭代对象
# 字符串没有问题
z= 'zqh'
print(z.__iter__())
# 列表也没有问题
q=['疫情快结束']
print(q.__iter__())
# 字典也没有问题
h={'name':'zqh','age':18,'password':666}
print(h.__iter__())
# 元组也没问题
se=(21,321,4321,54321,1)
print(se.__iter__())
wj=open()
print(wj.__iter__())
属于可迭代对象的有
字符串、列表、字典、元组、集合、文件对象
可迭代对象其实就是为了后续迭代取值做准备
提供了不依赖于索引取值的方式
迭代对象
1.什么是迭代器对象?
可迭代对象调用__iter__方法之后生成的结果就是迭代器对象
2.迭代器对象的特征
含有__iter__方法和__next__方法
如何理解得迭代器对象
一个总成 有很多技能 你需要哪一个功能 就给你这个功能
最为常见的两个是
__iter__ iter()
__next__ next()
# 2.有一些可迭代对象本身也是迭代器对象>>>:文件对象
# 3.可迭代对象调用一次__iter__方法编程迭代器对象 如果继续调用 结果还是迭代器对象本身
# res = s.__iter__()
# res1 = s.__iter__().__iter__().__iter__()
# print(res, res1) # <str_iterator object at 0x10762bdd8> <str_iterator object at 0x107636dd8>
# 4.迭代取值的要求
# print(s.__iter__().__next__()) # j 每次先产生一个新的迭代器对象然后取值
# print(s.__iter__().__next__()) # j 每次先产生一个新的迭代器对象然后取值
# print(s.__iter__().__next__()) # j 每次先产生一个新的迭代器对象然后取值
# print(s.__iter__().__next__()) # j 每次先产生一个新的迭代器对象然后取值
res = s.__iter__() # 已经变成迭代器对象了
print(res.__iter__().__next__()) # j 之后再调用还是自身
print(res.__iter__().__next__()) # a
print(res.__iter__().__next__()) # s
print(res.__iter__().__next__()) # o
for循环的内部原理
list = [11, 22, 33, 44, 55, 66, 77, 88]
res=list.__iter__()
n=0
while n<len(list):
print(res.__iter__())
n+=1
佛如循环的底层原理
for 变量名 in 可迭代对象 :
循环替代码
将in 后面的数据调用___intr__()变成迭代器对象
文件本身就是迭代器 再次调用也会不变 还是本身
针对产生的迭代器对象依次调用__next__()方法迭代取值
值去完之后会直接报错并且退出循环
异常处理
我们处理异常首先要知道什么是一场
就是bug 出现bug代码就会立刻停止
异常信息的组成部分
Traceback (most recent call last):
File "/Users/jiboyuan/PycharmProjects/day16/05 异常处理.py", line 3, in <module>
name
NameError: name 'name' is not defined
1.line关键字所在的一行
用于提示你代码哪一行出错了 点击前面的蓝色字体可以直接定位
'''如果报错的信息很长 一般最后一个才是'''
异常分类有语法异常、 逻辑异常、
语法异常就是不被允许的 代码编译时的错误,不符合Python语言规则的代码会停止编译并返回错误信息。
发生原因:缺少起始符号或结尾符号(括号、引号等)、缩进错误、关键字拼写错误
逻辑异常逻辑条件不成立
IndexError 索引错误 KeyError 键错误 ValueError 值错误
NameError 名字错误
异常处理实操
正常情况出现bug代码直接停止 但也可以通过代码来处理 从而避免程序停止
所以说代码都是很有意思的
他这个基本的语法结构是这样
try:
可能会出错的代码
except 错误的类型1 as e: # e指代的就是错误的提示信息
针对性的处理措施
except 错误的类型2 as e: # e指代的就是错误的提示信息
针对性的处理措施
except 错误的类型3 as e: # e指代的就是错误的提示信息
针对性的处理措施
try/except/else工作原理
当在try语句块中发生异常时,异常类型将会匹配except对应的name,然后根据对应的name分配对应的异常类对象,执行statement中的语句
当在try语句块中发生异常但没有在except中匹配到对应的name,python将会查询其他的异常直至进程最高级别的异常并退出程序,打印出默认的异常信息
如果try语句正常执行,那么最后也将会执行else语句
捕获任意或所有异常
使用except:,即后面没有携带任何异常类,将会捕获先前没有定义的异常类
使用except (e1,e2,..),即只要业务代码中抛出的异常是在定义的一系列异常列表中(e1,e2,…),那么就会在except语句中被捕获处理
except:与except Exception:
except:是捕获所有的异常,但存在不足,一是捕获和业务代码无关的系统错误,二是会拦截其他程序的异常处理
except Exception::py3.x建议使用这个Exception类,同时可以避免上述问题,Exception会忽略与系统操作相关的异常,如系统退出py时报出的异常
摘自——————csdn 博客
1.当try正常执行完没有异常执行else
try:
可能会出错的代码
except Exception as e:
统一的处理措施
else:
可能会出错的代码没有出错 最后走else子代码
finally:可以理解为最后
所以结合使用
try:
可能会出错的代码
except Exception as e:
统一的处理措施
print(e)
else:
可能会出错的代码没有出错 最后走else子代码
finally:
print('不管前面怎样最后都会执行')
断言 assert
Python断言语句带有一个条件,该条件必须为true。 如果条件为真,则意味着变量值的确定是正确的,然后程序将平稳运行并执行下一条语句。 但是,如果条件为假(这意味着我们的代码中存在一些错误),则会引发异常。
NameError主动来报错因为是主动所以非常明确的我们就知道了错误的类型可以根据错误来改正
for循环的本质:
# 利用while与异常捕获 实现for循环的功能
info = {'name': 'jason', 'age': 18, 'pwd': 123}
# 1.先转换成迭代器对象
# res = info.__iter__()
res = iter(info)
# 2.迭代取值
while True:
# print(res.__next__())
try:
print(next(res))
except StopIteration as e:
# 结束while循环
break
把字典转化成一个迭代器对象,这样才能迭代取里面的值,然后循环取值while true
那个try不就是异常处理吗,把可能出错的那个放到里面,因为循环取值,取完值就发生报错,所以用 except就是遇见这个错的时候,break自动退出循环
迭代器和索引取值对比
索引取值:优势是可以反复获取同一个元素 并且没有方向限制
不过只能支持有序的容器类型 无序的无法取值
迭代取值:兼容所有容器类型 劣势 取值就是一个方向 从左到右 无法重复 取完停止
# 真正底层的迭代取值后续可能很少用 一般都是for循环代替
"""
迭代器里面的东西是固定的 没取一个就会少一个 去完就空了
"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下