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

 

posted @   JohnYang819  阅读(5979)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示