python查看方法入参_在Python中获取方法参数名

本文介绍了如何在Python装饰器中利用inspect模块获取函数参数的名称和值,并通过itertools模块将它们转换为字典和列表。示例展示了如何处理位置参数和关键字参数,包括默认值和**kwargs。
摘要由CSDN通过智能技术生成

在decorator方法中,可以按以下方式列出原始方法的参数:import inspect, itertools

def my_decorator():

def decorator(f):

def wrapper(*args, **kwargs):

# if you want arguments names as a list:

args_name = inspect.getargspec(f)[0]

print(args_name)

# if you want names and values as a dictionary:

args_dict = dict(itertools.izip(args_name, args))

print(args_dict)

# if you want values as a list:

args_values = args_dict.values()

print(args_values)

如果**kwargs对您很重要,那么它将有点复杂:def wrapper(*args, **kwargs):

args_name = list(OrderedDict.fromkeys(inspect.getargspec(f)[0] + kwargs.keys()))

args_dict = OrderedDict(list(itertools.izip(args_name, args)) + list(kwargs.iteritems()))

args_values = args_dict.values()

示例:@my_decorator()

def my_function(x, y, z=3):

pass

my_function(1, y=2, z=3, w=0)

# prints:

# ['x', 'y', 'z', 'w']

# {'y': 2, 'x': 1, 'z': 3, 'w': 0}

# [1, 2, 3, 0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值