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