ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021/6/2

2021-06-02 12:32:20  阅读:136  来源: 互联网

标签:__ 迭代 生成器 2021 path dirname os


'''
魔术方法
内置属性-6
基本魔术方法-9
比较魔术方法-6
算术魔术方法-6
数据类型转换-5
上下文管理-2

可迭代对象
from collections.abc import Iterable
迭代器
迭代器的作用
对于序列类型我们可以使用索引进行迭代取值,
对于非序列类型,如字典、集合等,我们需要使用一种不依赖索引的方式来进行迭代取值
因而出现迭代器
for...in的原理
1. 调用对象的__iter__()方法,获取该方法的返回值,返回值需要是一个可迭代对象
2. 不停的调用可迭代对象的__next__()方法,获取该方法的返回值
迭代器的优缺点
优点:
统一了非序列和序列类型的迭代取值方式
惰性计算,对于迭代器,同一时刻在内存中仅存在一个值,只有在需要时再调用next方法获取值,减少内存的空间占用,对于迭代器的长度无限制
对于列表,他的所有元素都存放于内存中,列表长度受限于内存大小
缺点:
对于迭代器的创建目的就是不停的调用next方法,直到取尽
除非迭代器值取尽,否则获取不到迭代器的长度
对于迭代器迭代取值,我们无法获取到初始值,即上一个值
对于迭代器取值,如果迭代停止,那么迭代器停留在当前状态,下一次调用迭代器时,依然从当前状态开始,不会重启开始
对于同一个迭代器,多个for...in调用时,只会生效一个

生成器
生成器的作用
对于迭代器迭代取值,我们需要记录上一次状态,然后以上一次状态为基础,获取到当前状态的值
再迭代器中,我们一般通过next方法内自定义一套记录状态的操作来实现
而生成器可以提方便的提供给我们记录状态的方式,从而我们只需要不断的调用next方法,即可获取到下一个值
生成器也是一种特殊的迭代器
创建生成器的方式1
(i for i in range(1, 10))
创建生成器的方式2
yield 关键字
def zzw():
print(1)
yield
print(2)
yield
print(3)
send(None)
给上一个yield传值
对可迭代对象的操作
filter(func, iterable)
map(func, iterable)
from functools import reduce
reduce(func, iterable, 初始值)


异常处理
except语句
except Exception:
except 错误类:
except (xxxxx)
except as
finally关键字
finally代码永远会被执行
with关键字
使用with时,首先调用对象的__enter__()方法
获取enter方法的返回值赋予as f变量值
之后不管程序是报错,或者正常完成都会执行对象中的__exit__()方法
自定义异常
raise

常用模块
OS模块
操作目录
os.makedirs(dirname) 创建多级目录
os.removedirs(dirname) 递归删除空目录
os.mkdir(dirname) 创建单级目录
os.rmdir(dirname) 删除单级目录
os.chdir(dirname) 切换工作目录
os.listdir(dirname) 返回列表,列出指定目录下的所有文件和子目录,包括隐藏文件
五个属性
os.name
os.sep
os.pathsep
os.linesep
os.environ

删除文件
os.remove('file_name')

重命名文件或目录
os.rename(oldname, newname)
查看文件/目录信息
os.stat()

获取系统信息
os.getcwd()
os.getpid()
os.getppid()
os.cpu_count()

再当前系统下执行命令
os.popen('').read()
os.system()






目录
os.makedirs()
os.removedirs()
os.mkdir()
os.rmdir()
os.chdir()
os.listdir()

os.remove()
os.rename(oldname,newname)

os.getcwd()
os.getpid()
os.getppid()
os.cpu_count()

os.name
os.sep
os.linesep
os.pathsep
os.environ

os.popen().read()
os.system()

os.path
针对path
.abspath
.split
.dirname
.basename
.splittext
判断path
.exists
.isabs
.isfile
.isdir
合并路径
.join(abspath(), path)

返回stat
.getatime() 时间戳
.getmtime() 时间戳
.getsize() 字节

.abspath
.split
.dirname
.basename
.splitext

.exists
.isfile
.isdir
.isabs

.join(os.path.abspath(path), path)

stat
getatime
getmtime
getsize






'''

标签:__,迭代,生成器,2021,path,dirname,os
来源: https://www.cnblogs.com/zhangzhuowei/p/14840820.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有