美文网首页
2018-01-25

2018-01-25

作者: extanstory | 来源:发表于2018-01-26 09:12 被阅读0次
    
    1 【装饰器】
    def func_arg(arg):
        def func(functionName):
            def func_in():
                print("---记录日志-arg=%s--"%arg)
                if arg=="heihei":
                    functionName()
                else:
            return func_in
        return func
     
    #1. 先执行func_arg("heihei")函数,这个函数return 的结果是func这个函数的引用
    #2. @func
    #3. 使用@func对test进行装饰
    @func_arg("heihei")
    def test():
        print("--test--")
     
    #带有参数的装饰器,能够起到在运行时,有不同的功能
    @func_arg("haha")
    def test2():
        print("--test2--")
     
    test()
    test2()
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    def func(functionName):
        def func_in(*args, **kwargs):
            print("-----记录日志-----")
            ret = functionName(*args, **kwargs)
            return ret
        return func_in
    
    @func
    def test():
        print("----test----")
        return "haha"
     
    @func
    def test2():
        print("----test2---")
    @func
    def test3(a):
        print("-----test3--a=%d--"%a)
    ret = test()
    print("test return value is %s"%ret)
    a = test2()
    print("test2 return value is %s"%a)
    test3(11)
    
    2 【作用域】
    globels查看全局 
    locals 查看局部
    LEGB规则
    
    3【python是动态语言】
    动态增加属性方法
    object.addNewPro
    class.addNewPro
    object.test = types.MethodType.(test,object)
    object.test()
    @statucmethod 
    @classmethod 
    class.test = test
    class.test()
    
    4【__ slots__】
    __slots__ = (xxx,xxx)
    保证不在新添加属性
    
    5【生成器】
    (x for x in range(10)):
    yeild 
    send/next
    
    

    相关文章

      网友评论

          本文标题:2018-01-25

          本文链接:https://www.haomeiwen.com/subject/jjimaxtx.html