【问题标题】:Python - Return vs Print [duplicate]Python - 返回与打印 [重复]
【发布时间】:2017-04-21 16:40:00
【问题描述】:

我有一个删除词尾标点符号的功能

def clean(word):
    if word[-1].isalpha():
        return word.lower()
    else:
        word = word[:-1]
        clean(word)

例如,如果我运行print(clean('foo!!!')),该函数将打印None。但是,如果我在函数中将return 更改为print

def clean(word):
    if word[-1].isalpha():
        print(word.lower())
    else:
        word = word[:-1]
        clean(word)

然后函数打印foo。为什么returnprint 在这种情况下会有区别?

【问题讨论】:

  • 您的函数并不是真正的递归。第一个示例中的最后一行应该是return clean(word)。然后它将按您的预期工作。
  • @juanpa.arrivillaga 对此有更好的复制;更容易提取您需要的信息。
  • Patrick 已经给出了最准确的解释……我不认为这与那些完全一样……
  • 正确的问题是为什么函数返回None。这可以通过查看其所有代码路径来回答。
  • @PatrickHaugh 我不会说它不是真正递归的,它只是不会返回任何有用的东西,也没有任何有用的副作用。

标签: python printing return


【解决方案1】:

更改您的函数,使其可以进行递归调用:

def clean(word):
if word[-1].isalpha():
    return word.lower()
else:
    word = word[:-1]
    return clean(word)

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 2019-10-14
    • 1970-01-01
    • 2017-01-05
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多