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

时间:2015-04-11 22:12:55

标签: python tuples argument-passing

我有一个返回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。我想知道是否有一个更好的解决方案,而不是创建一个新函数只是为了返回元组的一个元素。

感谢阅读。

1 个答案:

答案 0 :(得分:4)

您可以将其命名为:

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

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

对于一般情况,这变为:

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

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