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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM