python怎么理解函数的参数_理解Python中的函数参数

我试图了解以下关于函数及其参数的处理:def print_my_arg(func, *args, **kwargs):

func(*args, **kwargs)

if 'my_arg' in kwargs:

print(' my_arg = {}'.format(kwargs['my_arg']))

def foo(call_no, my_arg='Default Value'):

print('call_no = {}'.format(call_no) )

print_my_arg(foo, 0, my_arg='My Value 1')

print_my_arg(foo, 1, 'My Value 2')

print_my_arg(foo, 2)

输出:

^{pr2}$

显然,人们可以自由地以上面所示的任何一种方式调用函数,这让我想知道:为什么my_arg不转到{}?难道没有一种统一的方法可以按名称(而不是位置)访问参数吗?这与调用函数的方式无关?在

请注意:我对print_my_args(func, call_no, my_arg)不感兴趣,因为我说的是这样的情况:我事先不知道{}的签名,但我想知道是否存在某个特定的参数(按名称)。

显然这与decorators有关,但是我用一种更简单的方式编写了示例(或者我希望如此)。

编辑

非常感谢您关于检验人签字. 使用它,我的新版本print_my_arg()是:from inspect import signature

def print_my_arg ( func, *args, **kwargs ):

func ( *args, **kwargs )

sig = signature ( func )

if 'my_arg' not in sig.parameters: return

binding = sig.bind ( *args, **kwargs )

binding.apply_defaults ()

print ( " my_arg = {}".format ( binding.arguments [ 'my_arg' ] ) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值