exec 动态的创造python代码,然后将其作为语句执行
evel evel执行python表达式,并返回结果值
exec和evel都可以设置命名空间
lambda 创建表达式形式的匿名函数,lambda是一个表达式,不是一个语句 lambda args:expression args是以逗号分割的参数列表 exp是表达式 map函数会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表 map和for在遍历时是等效的 map(fun,list) 对字典排序,一般都是按照字典的key进行排序 sort 会改变原始列表 sorted 不会改变原始列表 在用sort sorted进行大小写无关的排序时需要加入key参数,key参数指定按照什么方式排序,一般有str.lower unicode.lower,如果你不知道是普通字符串还是unicode,可以导入string模块,然后设置string.lower
对象通过引用传递的 不支持自增 自减之类的 i++ ++i 多元赋值 右边是元组 ,多元赋值可以实现不需要中间变量 交换两个变量的值 _xxx_ 系统定义的名字 _xxx 私有变量 python对象的类型和内存都是在运行时才确定的 当对象被创建时,就创建了一个引用计数 del 删除一个对象的引用 垃圾收集器手机引用计数器为0的对象 然后将该对象销毁 并释放内存 python使用对象模型来存储数据,对象都拥有三个特性:身份、类型、值。身份可以通过内建函数ID()来得到,类型可以通过type()来得到。 所有类型对象的类型都是type。 所有内建类型均支持比较运算,多个比较运算的求值顺序为从左到右。 <> 和 != 都是不等于的意思 is操作符来测试两个变量是否指向同一个对象 int()等看起来像函数,实质上是类,当你调用时他们生成该类的一个实例,所以叫工厂函数。 函数可以后定义 但必须在该函数运行时 调用的相关函数已经声明完成 在函数体内定义的函数 只能在函数体内部被调用 装饰器是在函数调用之上的修饰,以@开头,装饰器可以和函数调用一样堆叠起来 可以将函数作为参数来传递,并在函数体内调用这些函数。函数可以有默认参数,但是所有必须的参数都要在默认参数之前, *和** 支持变长参数,*是元组 表示非关键字参数 **是字典 表示关键字参数,关键字和非关键字参数都可以用在同一个函数中,只要关键字参数是最后一个参数并且非关键字元组先于它之前出现即可。 lambda关键字创造匿名函数,,lambda表达式的定义和声明必须在同一行 filter() 一个过滤函数过滤元素,返回为真的元素被保留,最后返回的对象是一个从原始队列中过滤后的队列 map() 和filter()类似,不过map返回的是所有值的列表 reduce() 函数内部的变量有局部作用域,为了防止局部变量在函数体内把全局变量的值给覆盖掉,可以在函数体内使用global关键字,指明访问的是全局变量 python语法上支持多个函数嵌套级别,可以匹配静态嵌套的作用域。 递归.. 函数包含对自身的调用 生成器是一个带有yield语句的函数,一个生成器能暂停执行并返回一个中间结果,那就是yield语句的功能,返回一个值给调用者并暂停执行,当生成器的NEXT()方法被调用的时候,他会从暂停的地方继续执行。 py2.5中还可以将值送回给生成器,并且在生成器异常时抛出异常,并要求生成器退出。 模块 sys sys.path 查看加载模块的路径 sys.modules 查看当前加载的模块都是那个路径下的 默认加载第一个碰到的模块 当访问一个属性时,先搜索局部空间-》全局空间-》内建空间 先搜索到的覆盖后面搜索到的 from...import.. 是导入模块的指定属性。import...as... 一个模块无论不导入多少次,只被加载一次,只从模块导入名字的副作用是,这些名字会成为你局部空间的一部分,可能会覆盖你已经存在的同名字对象。 reload()可以重新加载一个已经导入的模块,而这个模块必须是完全导入的,import sys.modules()包含当前导入的包的名称及位置 文件 文件对象不仅可以用来访问对象,也可以访问其他类型抽象层面上的‘文件’。内建函数open() file()都会返回一个文件对象,对该文件的后续操作都需要用到该文件对象。 open(filename,mode,buffer) filename 文件名称 mode 访问模式 buffer缓存模式 读 read() 全部,返回字符串 readline() 一行,返回字符串 readlines() 全部,返回字符串列表 写 write() writelines() 并没有writeline方法 在读文件一行 或者写文件一行时 read write 并不会删除或者添加尾部的换行符,需要你手动处理 移动 seek() 可以移动文件指针到文件中不同的位置 文件迭代器 更高效的读取文件 for eachline in fd: close() 关闭文件 print 语句默认在输出末尾加一个换行符,如果你read一行,然后用print输出,末尾则会有两个换行符,在print输出时,在末尾加上逗号,则可避免添加换行符 标准文件有三个 sys.stdin sys.stdout sys.stderr sys.argv 是命令行参数的列表 sys.argv[0] 是该文件名 没有sys.argc 用len(sys.argv)获得 错误异常 任何在try语句块里的代码都会被检测,检查是否有异常发生。 try组要有try..except和try..finally两种方式,这两种方式是互斥的,一个try语句可以对应多个except,但只能有一个finally 在一个except语句中可以处理多个异常,但这些异常需要放进一个元祖里。 捕获所有异常,使用exception模块 try也可以和else配合,在try中没有异常被检测到的时候,执行else中的代码。 finally字句则是,无论异常是否发生都会被执行的代码 try-except-else-finally with语句的目的在于从流程图中把try except finally关键字和资源分配释放相关代码统统去掉。 断言 assert,如果 字典 字典是唯一内建的映射类型。 只有对象是可以hash的才可以作为字典的键,因为字典是乱序的排序的,如果要获得有序的排列,在循环前使用内建sorted()函数处理一下字典 字典比较 1 比较大小 长度 2 比较键大小 3 比较值大小 集合 循环 与序列相关的内建函数有soreted() 排序 reversed() 反转 enumerate() 按照key和值遍历 zip() break 结束当前循环 跳转到下一句 continue 终止当前循环,忽略剩余语句,然后回到循环顶端 pass 不做任何事,只是结构需要 迭代器,他为序列类的对象提供了一个类序列的接口,python的迭代无缝的支持序列对象,而且还允许程序迭代非序列类型。你可以迭代不是序列,但表现出序列行为的对象。可以迭代序列 字典 文件 列表解析,可以用来动态的创建列表,[expr for i in if xxx] seq,duiseq中的每个元素应用expr表达式,然后产生新列表。列表解析表达式可以取代内建的map lambda表达式 生成器表达式是列表解析的一个扩展, 序列 字符串 列表 元祖 查看类的属性 dir(class) 或者 class.__dict__