Python 返回语句与无返回语句?

Python 返回语句与无返回语句?,python,return,Python,Return,我第一次尝试了nat_fn1(5),得到了2的答案。这是意料之中的。然后我尝试了相同的代码,没有返回,我得到了一个值None,这也是预期的。因此,应用相同的概念,我尝试了以下代码: def nat_fn1(k): if k == 0: return 1 elif k%2 == 0: return 2 else: return nat_fn1 (k-1) 我尝试了处理字符串(“cat”、“dog”),希望没有,因为递归中没有返回。然而,我仍然得到了一个答案:

我第一次尝试了nat_fn1(5),得到了2的答案。这是意料之中的。然后我尝试了相同的代码,没有返回,我得到了一个值None,这也是预期的。因此,应用相同的概念,我尝试了以下代码:

def nat_fn1(k):
  if k == 0:
    return 1
  elif k%2 == 0:
    return 2
  else:
    return nat_fn1 (k-1)
我尝试了
处理字符串(“cat”、“dog”)
,希望没有,因为递归中没有返回。然而,我仍然得到了一个答案:

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:])

我理解它是如何得到这些值的。但是没有返回语句。为什么这样做?

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


但如果在文件中运行,它不会自动执行此操作。如果您没有准确打印返回值,它将忽略返回值而不输出任何内容

函数没有返回你刚才打印的值,函数没有返回它们。我不太明白。对不起,我是Python新手。那么,当我执行递归而不返回时会发生什么呢?它是否仍然递归或在递归之前停止?函数运行时不考虑其返回值(即使没有)。这意味着打印被执行,调用相同函数的行也被执行。Zondo,使用相同的逻辑,我尝试了nat_fn1(5)到第一个程序,但没有返回。所以这个程序递归,可以作为nat_fn1(4)再次运行,因此4%2==0应该返回2。然而,事实并非如此。为什么?我知道,但是为什么这个程序一开始就递归,而没有返回语句?要获得3种不同的打印输出,格式(s[0],t[0])、s和t每次都必须不同,以证明此程序是递归的。因此,我尝试了nat_fn2(5)到我发布的第一段代码,但没有返回语句。我希望答案是2,因为这个程序会递归,并且带有k%2的elif语句有一个return语句。但我没有得到任何回报。我现在完全迷路了
process\u字符串(s[1:],t[1:])
是递归的。虽然它不返回值,但它做了一些工作。也就是说,它打印字符串。所以它递归地打印字符串@有什么办法可以和你聊天吗?我现在仍然有点困惑在聊天室聊天,你可以创建一个@compsci我如何访问这个聊天室?
cd
ao
tg