python 以varargs调用语法来传递参数

在看python学习手册的时候,看到了一个关于传递参数的例子,比较杂,初看有点不解,实际敲了一遍,在pycharm上debug一下才知道实际情况。

代码如下:

def tracer(func, *pargs, **kargs):
    print('calling:', func.__name__)
    return func(*pargs, **kargs)

def func(a, b, c, d):
    return a+b+c+d

print(tracer(func, 1, 2, c=3, d=4))

运行顺序如下:

1、运行print(tracer(func, 1, 2, c=3, d=4)),

2、来到第一行,将1和2传递给pargs,将c=3和d=4传递给kargs,得到
 

pargs: (1, 2)        

kargs: {'c': 3, 'd': 4}

3、然后输出

calling: func

4、到第3行,将pargs和kargs作为参数,运行func函数,func函数得到参数:

a: 1, b: 2, c: 3, d: 4

5、func函数返回a+b+c+d,即10,再将这10返回给调用tracer()函数的地方,也就是一开始的print,从而打印出10

完整结果如下:

calling: func
10

代码运行顺序(数字代表行号):

        8->1->2->3->5->6->3->8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值