return语句vs无返回语句?

时间:2017-06-18 03:04:11

标签: python return

def nat_fn1(k):
  if k == 0:
    return 1
  elif k%2 == 0:
    return 2
  else:
    return nat_fn1 (k-1)

我首先尝试了nat_fn1(5),得到了2的答案。这是预料之中的。然后我尝试了相同的代码而没有返回,我得到的值为None,这也是预期的。所以应用相同的概念,我尝试了这个代码:

def process_strings(s,t):
   if s == "":
      if not(t== ""):
         print(t)
   else:
      print("{0}{1}".format(s[0],t[0]))
      process_strings(s[1:], t[1:])

我尝试process_strings("cat","dog"),期待无,因为递归中没有返回。但是,我仍然得到了答案:

cd
ao
tg

我理解它是如何得到这些价值的。但是没有回复声明。为什么这有效?

1 个答案:

答案 0 :(得分:1)

你得到的不是返回值,而是print语句的输出 如果您在交互式提示中以交互方式运行代码,它将回显return值。

但是如果你在一个文件中运行它,它就不会自动执行。如果您没有准确打印返回值,它将忽略返回值并且不输出任何内容。