zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    逆序对的相关问题:bzoj1831,bzoj2431
    bzoj3211,bzoj3038
    hdu 1179最大匹配
    hdu 3038带权并查集
    poj 1733离散化(map)+并查集
    codeforces 369B
    poj 1456
    POJ 1988相对偏移
    poj 1986tarjan模板题
    poj 1330lca模板题离线算法
  • 原文地址:https://www.cnblogs.com/xuanouba/p/5557952.html
Copyright © 2011-2022 走看看