zoukankan      html  css  js  c++  java
  • python中的__code__

    简单总结几个常用的__code__的用法:

    (1)func.__code__.co_argcount:返回函数的参数个数,这里的参数个数不包含*args与**kwargs,具体来讲就是*args前的参数。

    >>> def a(a,b,c,d=2,e=3,*arg,f,g=8,**kwargs):
        print(a,b,c,d,arg,f,g,kwargs)
    >>> a.__code__.co_argcount
    5

    这里的5个就是a,b,c,d,e

    (2)func.__code__.co_kwonlyargcount:返回函数强制关键字参数个数,也就是*args后面的参数个数,这里参数个数也不包含*args和**kwargs。

    >>> a.__code__.co_kwonlyargcount
    2

    这里两个就是f,g。

    (3)func.__code__.co_cellvars和func.__code__.co_freevars是对闭包函数而言的。

    func.__code__.co_cellvars:返回外部函数中被内嵌函数调用的参数,这里注意,一定是被调用的。

    func.__code__.co_freevars:返回内部函数中引用外部函数参数。

    >>> def f(a,b):
        c=2
        def g():
            e=c
        return g
    >>> print(f.__code__.co_consts[2].co_freevars)
    ('c',)

    这里co_consts是外部函数f的常量有2,和g。

    >>> print(f.__code__.co_cellvars)
    ('c',)

    4.__code__.co_varnames:将函数局部变量以元组的形式返回。

    >>> f.__code__.co_varnames
    ('a', 'b', 'g')
    >>> def test(a,b,c,d=1,e=2,*args,f=3,g,h=4,**kwargs):
        print(a,b,c,d,e,f,g,h,args,kwargs)
    >>> test.__code__.co_varnames
    ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'args', 'kwargs')
    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    MSBuild、条件编译、预处理命令
    批量数据插入SqlBulkCopy
    WPF 双向绑定
    编程思想之一
    python 提交表单
    python 添加用户
    python 分页
    day9 IO多路复用
    day9 线程、进程和协程深入版
    day8 进程、线程 简介版
  • 原文地址:https://www.cnblogs.com/johnyang/p/10533511.html
Copyright © 2011-2022 走看看