函数返回返回int或int列表。将第一个分配给变量

时间:2016-11-02 17:09:42

标签: python tuples

假设我们有

function doW() {
  console.log('do W');
}
function doX() {
  console.log('do X');
}
function doY() {
  console.log('do Y');
}
function doZ() {
  console.log('do Z');
}


var fn = {
  '11': doW,
  '10': doX,
  '01': doY,
  '00': doZ
}
  
function doFn(a, b) {
  fn[(a|0)+''+(b|0)+'']();
}

doFn(false, true);

给出了这些功能。这不是我可以修改的代码。 我们知道它们返回整数或它们的序列。

我想将返回值赋给变量,如果返回值是它们的序列,那么变量应该只取第一个整数。

Python中是否有内置的语法设备允许我这样做?

def f_1():
    return (3, 4)

def f_2():
    return 2

注意:假设我们不知道哪个函数返回序列,哪些函数只返回一个数字。

3 个答案:

答案 0 :(得分:2)

  

是否有内置语法设备

没有。通常的做法是ask forgivness

x = function()
try:
    x = x[0]
except TypeError:
    pass

答案 1 :(得分:1)

我不会去try-except语句。对我来说这太过分了。

我更有可能尝试做类似的事情:

result = function()
# this can be changed to abc.Sequence for more general approach
if isinstance(result, (list, tuple)): 
    result = result[0]

答案 2 :(得分:1)

转向另一个方向,将f_2包装在另一个函数中,以确保循环体中调用的函数始终返回一个序列。

for function in [f_1, lambda : (f_2(),)]:
    x = function()[0]

另一个函数调用的额外开销可能会使这种方法不合需要。