生成器表达式,列表推导式、内置函数

一、列表推导式

[变量(加工后的变量) 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

 

posted @ 2018-06-20 16:20  小小猎魔人  阅读(172)  评论(0编辑  收藏  举报