将元组的一个元素作为参数与其他参数一起传递

Pass one element of tuple as argument along with other arguments

我有一个库函数 return 是一个 tuple 看起来像这样

def some_function(some_string):
    does something
    return (text,id)

现在我想将来自 some_function 的文本 return 作为参数传递给另一个函数。问题是该函数还有其他参数,我不想将整个元组作为指针传递。我还需要检索许多由 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") 以便它只发送文本而不是文本和 id 作为参数?

other_function是这样定义的

def other_function(name,phone,text,age):
   ...
   return 

我自己想出的一个解决方案是创建另一个 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。我想知道是否有比为 return 元组的一个元素创建新函数更好的解决方案。

感谢阅读。

您可以运行这样:

other_function(name, phone, some_function("abcd")[0], age)

无需定义额外的 if 语句、包装函数等,因为您只想传递从原始函数返回的元组的第一个元素。

对于一般情况,这变成:

other_function(name, phone, some_function(some_string)[0], age)

请注意,元组是另一个(不可变的)迭代器,它的元素可以像在列表中一样使用常规索引访问。