基础学习之第十四天(列表推导式和生成器表达式和内置函数)
迭代器的优点:
1.节省内存
2.惰性机制
3.单向,不可逆
如何判断它是否是可迭代对象和迭代器
可迭代对象->迭代器
可迭代对象__iter__():就会变成迭代器
1.'__iter__'in dir(obj):True或Flase,返回True就代表他是可迭代对象
2.引入模块
from collections import Iterator(迭代器)
print(isinstance(参数名,Iterator)
from collections import Iterable(迭代对象)
print(isinstance(参数名,Itera)ble
生成器:
自己用python代码写的迭代器就是生成器
生成器本身就是迭代器
生成器的表达式和列表推倒式
1.列表推导式
[变量(加工后的变量) for 变量 in iterable(迭代对象)] # 循环模式
[变量(加工后的变量) for 变量 in iterable if 条件] # 筛选模式
2.生成器表达式:和列表表达式一样只是括号不一样
优点:1.节省代码
缺点:不好排错
整体:凡是用列表推导式构造的,用其它方式也可以,非常复杂的列表,列表推导式是构造不出来的
内置函数
1.1作用域相关
a =33 b = 22 def func(): a = 1 print(globals(),'\n',locals()) func()
1.21其他相关
字符串类型代码的执行 eval,exec,complie
print(eval('1*2*3*4*5*6*7*8*9')) li = """ for i in range(10): print(i) """ exec(li)
1.22输入输出相关print 和 input
k = print(1,2,4,6,sep='******',end='') with open('试验品.txt','w',encoding='utf-8') as f: print('111111111111',1111,file=f,sep='****') print('111111111111',1111,file=f,sep='****') print('111111111111',1111,file=f,sep='****')
1.23内存相关hash():获取一个可哈希对象的哈希值,id(返回内存地址)
print(hash(1020000000000000000))# 数字最多19个才能保证可哈希值和数值一样,超过的话就会变成别的 print(hash('1111111111111111111')) # 哈希字符串 print(hash((1,2,3,4))) # 哈希元组 print(hash(True)) # 哈希bool值
1.24文件打开和模块相关操作open()和import()函数用于动态加载类和函数
open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写 1.25 help():帮助 a = 1 help(a)#查看帮助
1.26 调用相关 callable()能调用返回True 不能调用返回False
def func(): a = 123 b = 147 def func1(): aa = 1111 bb = 1111 return func1 print(callable(func))