我需要将Python中函数的输出作为参数传递给另一个函数。唯一的问题是第一个函数返回一个元组,整个元组需要传递给第二个函数。
例如:
我有一个库函数:
def some_function(some_string, some_number):
# does something
return (text,id)
现在,我想将as参数传递text
并id
返回some_function
给另一个函数。问题在于该函数还具有其他参数。我还需要检索许多由some_string
和的不同值生成的文本和ID number
。
根据满足的条件,我想调用另一个看起来像这样的函数
if abcd:
other_function(name,phone,**some_function("abcd","123")**,age)
elif xyz:
other_function(name,phone,**some_function("xyz","911")**,age)
else:
other_function(name,phone,**some_function("aaaa","000")**,age)
那么,我应该用替换什么some_function("abcd","123")
,以便它扩展元组并发送text
和id
作为参数?
other_function的定义如下
def other_function(name, phone, text, id, age):
...
return
简单地通过some_function("aaaa","000")
作为论点会起作用吗?
我之所以这样问是因为我写了一个简单的代码来检验我的假设,这给了我空白的输出。
def f(id,string):
return ("123", "hello")
def a(name, age, id, words, phone):
print name + age + id + words + phone
def main():
a("piyush", "23", f("12", "abc"), "123")
您还可以更改签名中参数的顺序:
def a(name, age, id, words, phone):
name = name
age=age
id=id
words=words
phone=phone
print name+age+id+words+phone
a("piyush", "23", 123, *f("12","123"))
piyush23123123hello
这样,您可以在调用函数时直接解压缩返回的值。但是请注意,这使可读性非常差,并且调试难度更大。
另外,如果您不想使用拆包并更改调用函数,则可以这样更改代码:
def a(name, age, id_words, phone):
name = name
age=age
id=id_words[0]
words=id_words[1]
phone=phone
print name+age+id+words+phone
a("piyush", "23", f("12","123"), "123")
piyush23123hello123
这具有使所有函数调用保持原样的优势。仅功能的内部工作会更改,签名不会更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句