生成器表达式,列表推导式、内置函数
一、列表推导式
[变量(加工后的变量) for 变量 in iterable] 循环模式
# l2 = [i for i in range(1, 14)] # print(l2) # l3 = [ 'python%s期' % i for i in range(1, 14)] # print(l3)
凡是用列表推导式构造的列表对象,用其他方式都可构建.,非常复杂的列表,列表推导式是构建不出的
[变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式
# l1 = [i for i in range(1, 31) if i % 3 == 0] # print(l1)
二、生成器表达式
# g_obj = ('python%s期' % i for i in range(1,14)) # 循环模式 # g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 筛选模式 # print(g_obj) #<generator object <genexpr> at 0x00000000025F73B8> # print(g_obj.__next__()) #python1期
1.把列表解析的 [ ] 换成 ( ) 得到的就是生成器表达式
2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
3.Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的
三、内置函数
***locals() 当前位置的所有变量以及函数名等数据.
***globals() 永远是全局的.
*** eval:执行字符串类型的代码,并返回最终结果。
# print(eval('1+3')) 4 # dic = eval("{'name': 'alex'}") # print(dic,type(dic)) {'name': 'alex'} <class 'dict'>
*** exec: 执行字符串类型的代码
code = ''' for i in range(1, 11): print(i) ''' exec(code)
结果: 1 2 3 4 5 6 7 8 9 10
compile:将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值
*** input:函数接受一个标准输入数据,返回为 string 类型
*** print:打印输出
# print(1,2,3,sep='|') # 设置每个元素的连接符 sep='|' # print(666,end='') # end='\n' 默认换行
# print(555)
** hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值
** id:用于获取对象的内存地址
open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写
__import__:函数用于动态加载类和函数
help:函数用于查看函数或模块用途的详细说明
** callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1(): print(111) a = 666 print(callable(a)) False print(callable(func1)) True