day04 Python一些内置函数及装饰器
一、内置函数
divmod() divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数,返回结果类型为tuple
callable() 可否被调用
chr() 将一个数字转换为ascii表中的字符
ord() 将一个字符转换为ascii表中的数字位置
compile() 将字符串编译成Python代码
exec() 执行上面编译完成的Python代码,不返回结果 evel() 执行表达式,并返回结果 isinstance() 判断对象是否为某个类的实例 filter(函数,可迭代对象) 循环第二个参数(可迭代对象),让每个元素作为第一个参数(函数)的参数执行一侧函数,如果函数的返回值为True,表示元素合法,将元素添加到filter()的返回值中 map(函数,可迭代对象) 循环第二个参数(可迭代对象),让每个元素作为第一个参数(函数)的参数执行一侧函数,如果函数的返回值为True,则返回True globals() 所有的全局变量 locals() 所有的局部变量 len() 关于len函数,Python3里默认按照字符的长度来计算,可以通过bytes()函数将字符转换为字节,从而计算出字符的字节长度,而在Python2里默认是按照字节长度来计算的,不能求出字符的长度
二、装饰器
def deco(func): print func return func @deco def foo():pass foo() #第一个函数deco是装饰函数,它的参数就是被装饰的函数对象。我们可以在deco函数内对传入的函数对象做一番“装饰”,然后返回这个对象(记住一定要返回 ,不然外面调用foo的地方将会无函数可用。实际上此时foo=deco(foo)) #有参数装饰器 def decomaker(arg): '通常对arg会有一定的要求' """由于有参数的decorator函数在调用时只会使用应用时的参数 而不接收被装饰的函数做为参数,所以必须在其内部再创建 一个函数 """ def newDeco(func): #定义一个新的decorator函数 print func, arg return func return newDeco @decomaker(deco_args) def foo():pass foo() #第一个函数decomaker是装饰函数,它的参数是用来加强“加强装饰”的。由于此函数并非被装饰的函数对象,所以在内部必须至少创建一个接受被装饰函数的函数,然后返回这个对象(实际上此时foo=decomaker(arg)(foo))
装饰器的执行顺序: