我有一个返回tuple
的库函数,看起来像这样
def some_function(some_string):
does something
return (text,id)
现在我想将some_function返回的文本作为参数传递给另一个函数。 catch是函数还有其他参数,我不想将整个元组作为指针传递。我还需要检索许多将由some_string的不同值生成的文本。
根据遇到的条件,我想调用另一个看起来像这样的函数
if abcd:
other_function(name,phone,**some_function("abcd")**,age)
elif xyz:
other_function(name,phone,**some_function("xyz")**,age)
else:
other_function(name,phone,**some_function("aaaa")**,age)
那么我该如何替换 some_function(“abcd”),以便它只发送文本而不是text和id作为参数?
other_function定义如下
def other_function(name,phone,text,age):
...
return
我自己提出的一个解决方案是创建另一个只返回文本的函数。
def returntextonly(some_string):
self.some_string = some_string
(text,id) = some_function(some_string)
return text
然后调用other_function,如
if abcd:
other_function(name,phone,returntextonly("abcd"),age)
我主要用C ++编程,最近才拿起python。我想知道是否有一个更好的解决方案,而不是创建一个新函数只是为了返回元组的一个元素。
感谢阅读。
答案 0 :(得分:4)
您可以将其命名为:
other_function(name, phone, some_function("abcd")[0], age)
不需要定义其他if
语句,包装函数等,因为您只想传递从原始函数返回的元组的第一个元素。
对于一般情况,这变为:
other_function(name, phone, some_function(some_string)[0], age)
请注意,元组是另一个(不可变的)迭代器,可以使用列表中的常规索引访问其元素。