Python中返回值的混淆

时间:2019-07-03 10:19:09

标签: python-3.x

我对Python不太熟悉,我在代码中遇到以下问题,有人帮助我解释原因吗?

def caller1(a):
  return 'a' if a < 11 else 'a', 'b'

print(caller1(a=5))

def caller2(a):
  if a < 11:
    return 'a'
  else:
    return 'a', 'b'

print(caller2(a=5))

c = caller2(a=5)
print(c)

对于主叫方1,我希望输出为'a',但输出为('a','b')

呼叫者2的

将打印'a',但最终打印('a','b')(至少根据我的调试将显示('a','b')结果,同时显示'a'和(' a','b')将打印出来。)

为什么会这样?

1 个答案:

答案 0 :(得分:0)

结果:

调用方1函数的输出是('a','b')而不是a。

原因:

在行

  return 'a' if a < 11 else 'a', 'b'

其他条件仅包含“ a”,而不包含“ a”,“ b”。 'b'与if / else条件之间用逗号分隔。

因此该函数返回“ a”(因为<11为真),后跟“ b”。

解决方案:

用下面的行替换以获得所需的结果。

  return 'a' if a < 11 else ('a', 'b')