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))

装饰器的执行顺序:

QQ图片20160612115546

posted on 2016-06-03 23:58  宣欧巴  阅读(169)  评论(0编辑  收藏  举报