Python基础周总结(4)

一、内置函数与可迭代对象

常见内置函数

abs求绝对值(输入浮点型类型会返回一个整数)
all any()判断容器类型中的所有数据值对应的布尔值是否为True(all 全部对才算true any只要一个对全对)
bin将数据转换为二进制
oct将数据转换为八进制
hex将数据转换为十六进制
int数据类型转换将数据转十进制
callable判断当前名字是否可以加括号调用
chr依据ASCII码表实现字符与数字的转换将数字转换为字符
ord依据ASCII码表实现字符与数字的转换将字符转换为数字
dir通过句点的方式查看所选择的函数所有全部内置函数方法
divmod获取除法之后的整数和余数(里面可以放两个数据值 左边目标数据值右边表示可以整除的次数)
enumerate枚举(可以自定义索引取值的开始位置)
eval能够识别字符串中python代码并执行(只能够识别简单的代码)
exec能够识别字符串中python代码并执行(能够识别简单的代码已经复杂的代码)
hash随即返回一串哈希值数字
help获取python中的帮助看代码有什么问题
isinstance判断某个数据是否属于某个数据类型
pow幂指数获取当前数字的幂次方
round四舍五入(有两个参数 第一个数表示整数第二个表示可以四舍五入的小数点五则06则1)

可迭代对象

		迭代就是更新换代 每次迭代都需要基于上一次的成果更新
		指存储了元素的一个容器对象 且容器中的元素可以通过双下iter( )方法和双待next()方法访问
		内置有__iter__方法的都叫做可迭代对象
		可迭代对象(字符串 列表 字典 元组 集合 文件对象(本身就是迭代器对象))
		不是可迭代对象(整型 浮点型 布尔值 函数名)

二、异常捕获与生成器

异常捕获就是我们口中的bug 但是bug也是可以修复的 关键就是在结果的最后一行 重点说出了错误的类型以及错误代码行数 这就是异常捕获知道问题在哪也可以去修复它

	异常错误类型
		NameError				未声明/初始化对象 (没有属性)
		IndexError				序列中没有此索引(index)
		KeyError				映射中没有这个键
		SyntaxError				Python 语法错误
		TypeError				对类型无效的操作
		ValueError         		传入无效的参数
		ImportError         	导入模块/对象失败
		1> 什么时候才可能会需要自己写代码处理异常?
			当代码不确定什么时候会报错的情况下就需要自己写代码处理
		2> 异常捕获的使用相当于是提前预测可能出现的问题并提前给出处理的措施
		3> 异常捕获的代码实现
			1.基本语法结构(针对性很强)
				try:
		         	可能会出错的代码(try监控)
		        except 错误类型1 as e:  				# e就是具体错误的原因
		            对应错误类型1的解决措施
		        except 错误类型2 as e:  				# e就是具体错误的原因
		            对应错误类型2的解决措施
		        except 错误类型3 as e:  				# e就是具体错误的原因
		            对应错误类型3的解决措施
		        except 错误类型4 as e:  				# e就是具体错误的原因
		            对应错误类型4的解决措施
		          
		   	2.万能异常(笼统的处理方式)
		   		try:
		            123 + 'hello'
		        except Exception as e:  			# 万能异常方式1	它是方式2的孙子
		            print(e)
		        except BaseException as e:  		# 万能异常方式2	它是方式1的爸爸 父子关系
		            print(e)
		            
		        result:	unsupported operand type(s) for +: 'int' and 'str'

		4> 异常捕获其他操作补充
			1.elsefinally
				try:
			        name
			    except Exception as e:
			        print('你出错了 你个小垃圾')
			    else:
			        print('try监测的代码没有出错的情况下正常运行结束 则会执行else子代码')
			    finally:
			        print('try监测的代码无论有没有出错 最后都会执行finally子代码')

			'''else与finally的区别在于 如果上面代码题没有出现问题则会运行 else 但是不管上面代码体错与对都会运行finally'''

			2.断言
				name = 'meijin'
				assert isinstance(name, str)		# 判断name是否属于字符串类型 如果不是则报错
				print('针对name数据使用列表相关的操作')
		
			'''断言就是表达式条件为 false 的时候 不对则直接报错 对则正常执行下面的代码'''

			3.主动抛异常
				name = input('username>>>:').strip()
				if name == 'Lebron James':
					raise NameError('Lebron James来了 快跑!!!')
		        else:
					print('不是Lebron James那没事了')

			'''rasie主动报错如果输入了Lebron James那就直接报错 如果不是Lebron James那就执行下一行'''

三、生成器

	1.自定义生成器的本质
		本质其实就是迭代器对象 只不过迭代器是解释器提供给我们的(现成的)
		生成器是我们自己定义出来的(自己动手) __iter__和__next__
	2.学习生成器对象的目的
		主要目的就是为了优化代码 一种不依赖于索引取值的通用方式
		可以节省数据类型的内存占用空间(主要)

	3.生成器对象代码实现
   	
   		def index():
		    print('我是谁呀 嘿嘿嘿~')
		    yield 111, 222, 333								当函数体代码中有yield关键字
		    print('你追我 如果你追到我 我就... 嘿嘿嘿~')			
		    yield 222										yield可以在函数体代码中出现多次
		    print('实在跑不动了 嘿嘿嘿~')	
		    yield 333										yield后面如果有数据值 则会像return一样返回出去
		    												如果有多个数据值逗号隔开 那么也会自动组织成元组返回
		 
		print(index)										第一次加括号调用不会执行函数体代码
		res = index()
		print(res)											而是由普通的函数变成了迭代器对象(生成器)  返回值
		res.__next__()										每次调用__next__方法都会从上往下执行直到遇到yield代码停留在此处
		res.__next__()
		res.__next__()

四、模块

	模块可以看成一个完整的功能非常强的大代码体 里面有很多强大的功能 
	如果我们想要去把它写出来会耗费很长时间 但是模块就可以直接导入使用 相当于模版就是这么牛
	
	模块分类>	内置模块>自定义模块>第三方模块
	
	基本格式>	import 模块名> from 模块名 import  模块内部名称
	
	模块重命名>	import 模块名 as 新名称	>	from 模块名 import  模块内部名称 as 新名称
	
	模块导入多个名称>	import 模块名 名称1,名称2 	
			     > from 模块名 import  模块内部名称 ,内部名称2	(名称之间逗号隔开)
				
	导入全部名称>	from 模块名 import *  	(*代表全部)
	在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字(仅限制在*模式下使用)

	模块查找顺序>	先从内存空间中查找>>>再从内置模块中查找>>>最后取sys.path查找

五、绝对导入相对导入

	绝对导入
		绝对路径就是我们说到的指定到特指的文件
		from Desktop import Join							来自桌面的Join文件
		from Desktop.Game.Login import exe 					来自桌面文件夹Game子文件夹Login里面的exe文件 
		其实就是以执行文件所在的sys.path为起始路径 往下一层层查找
		如果有文件不在同一级别的文件夹路径,想使用直接把绝对路径添加到执行文件sys.path里面即可
		
	相对导入
		相对导入就是给到路径文件夹了 但是不知道它哪个文件夹里面
		from Desktop import new			   					只给到文件夹Desktop不知道new在那个字文件里面
		但是相对导入只能在模块文件中使用 不能在执行文件中使用
		相对导入在项目比较复杂的情况下 可能会出错所以推荐使用绝对导入 少用相对导入

六、包与内置函数模块

	包的主要作用是用来方便管理文件资源	创建一个文件夹里面含有__init__.py的文件夹叫包
	这个文件里面有什么文件你才能用什么文件 导入包里面其他py 文件会直接报错的
	其实也可以跨过__init__.py直接导入包里面的模块文件 那就是直接指名道姓 导入包里面的模块

collections模块

namedtuple主要用来一个关键词可以赋予多个值(namedtuple(‘关键词’, [‘数据值1’, ‘数据值2’]))
deque主要是用来追加列表可以从尾部也可以从头部不能从尾部
orderedict有序字典可以通过索引索引出我们想要的数据值
counter计数器 可以快速计算出字符出现的次数

time模块

time.time获取时间戳 当前距离1970.7.1.零时零分的秒数
time.gmtime结构化时间 获取格林威治时间
time.strftime格式化时间 获取中国北京时间

七、DateTime OS SYS JSON模块

DateTime模块

now
now.year获取当前今日北京时间
now.month获取当前是几月份
now.weekday获取今天星期几
now.isoweekday获取今天是近期几
now.microsecond获取当前是是多少微妙
datetime.datetime.utcnow获取当前格林威治的时间
datetime.datetime.utcnowtimedelta(括号内可以设置时间日时分秒毫秒微秒)

OS模块

os模块
os.mkdir(r’文件名’)创建单级目录(创建一个文件夹 )
os.makedirs(r’父文件夹\子文件夹\子文件夹’)创建多层目录(创建多层文件夹)
os.rmdir(r’文件名’)删除单个文件夹不允许文件夹同级还有文件
os.removedirs(r’父文件\子文件\子文件’)删除文件夹里面的文件 如果外层父文件没有数据 则也会删除
os.listdir()获取当前执行文件下的目录(文件夹)
os.listdir(r’D:\')获取D盘里面的目录(文件夹)盘符可以随意更改
os.remove(r’文件名’)删除所选中的文件
os.rename(r’文件名’)重新命名所选中的文件
os.getwcd()获取当前执行文件所在的绝对路径
os.chdir(r’…')获取上一层级的文件所在路径
os.path.abspath(file)获取当前执行文件的绝对路径
os.path.dirname(file)获取当前目录所在的路径
os.path.exists(r’文件夹’)获取当前选择的文件是否是文件夹 False True
os.path.exists(r’文件’)获取当前选择的文件是否是文件 False True
os.path.isdir()获取当前选择的文件是否是文件夹 False True
os.path.isfile()获取当前选择的文件是否是文件 False True
os.path.join(文件名1,文件名2)主要用来添加拼接路径就需要用到+号了
os.path.getsize(r’文件名+后缀’)获取文件大小 英文一个字符 中文三个字符 以bytes为单位

SYS模块

sys模块
sys.path第一个路径是当前执行文件所在的目录 第二个是整个项目的路径 ‘PyCharm’ 的优化 (在别的编辑器上没有 可以忽略)
sys.version查看当前解释器版本信息(3.8.6 (v3.8.6:db455296be, Sep 23 2020, 13:31:39) )
sys.platform查看当前操作系统平台名称 darwin
sys.exit一般情况下运行程序的情况下 想退出程序调用exit即可退出
sys.getdefaultencoding获取解释器默认编码 UTF-8
sys.getrecursionlimit获取最大递归层数官方给到默认值1000实际测试997~8左右
sys.setrecursionlimit设置最大递归层数 根据自己想设置的层数即可 最大值 3000

json模块

dumps()将其他数据类型转换成json格式字符串
loads()将json格式字符串转化成对应的数据类型
dump()将其他数据数据以json格式字符串写入文件
load()将文件中json格式字符串读取出来并转换成对应的数据类型

以上均是上周的内容总结,详细案例请查看本人主页原文,技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞收藏+关注谢谢支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoisMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值