Python 使用所有原始参数调用函数

Python 使用所有原始参数调用函数,python,Python,在我的程序中,我被困在一个点上,我不知道什么是解决这个问题的正确方法。下面我试图解释一下我想要实现的目标 此函数首先尝试使用accesstoken获取一些信息,如果该令牌过期,它将调用另一个函数以获取新令牌。在这个阶段,我希望它使用新的令牌重新运行父函数(使用所有正确的参数)。这就是我下面的东西,我确信它看起来很破旧 def do_something(accesstoken, a, b, c): print "I am working ..." r = requests.get(

在我的程序中,我被困在一个点上,我不知道什么是解决这个问题的正确方法。下面我试图解释一下我想要实现的目标

此函数首先尝试使用accesstoken获取一些信息,如果该令牌过期,它将调用另一个函数以获取新令牌。在这个阶段,我希望它使用新的令牌重新运行父函数(使用所有正确的参数)。这就是我下面的东西,我确信它看起来很破旧

def do_something(accesstoken, a, b, c):
    print "I am working ..."
    r = requests.get(url + accesstoken)
    if r.status_code != 200:
        get_fresh_tokens(do_something)
        # call this function again
    else:
        print "voila!"

def get_fresh_tokens(func_to_call):
    # gets new token called accesstoken
    func_to_call(new_accesstoken) # params a, b, c are lost
处理这种问题的正确方法是什么


谢谢

您可以将参数作为额外参数传入:

def get_fresh_tokens(func_to_call, *args, **kw):
    # gets new token called accesstoken
    func_to_call(new_accesstoken, *args, **kw)
使用如下方式:

get_fresh_tokens(do_something, a, b, c)
位置参数
a
b
c
被捕获在
get_fresh_tokens()
args
参数中,该参数在调用
func_to_call()
时重新应用该列表作为位置参数

**kw
参数捕获字典中的任何关键字参数,如果传入,则在
func\u to\u call()函数中使用镜像语法也将重新应用这些参数