当前位置: 首页 > 面试题库 >

Python:函数总是返回None

徐阳炎
2023-03-14
问题内容

我有一些Python代码基本上看起来像这样:

my_start_list = ...

def process ( my_list ):
    #do some stuff

    if len(my_list) > 1:
        process(my_list)
    else:
        print(my_list)
        return my_list

print(process(my_start_list))

奇怪的是: print(my_list) 打印出正确的内容。但是,第二个打印该函数返回值的打印语句始终打印“无”。即使我用 return(“
abc”)
替换普通的return语句,它仍然是None。

由于该变量的内容似乎在return语句前一行是正确的,所以我不知道从哪里开始调试。是否有可能导致此问题的常见问题?


问题答案:

这是发生了什么:

  1. 你打电话process(my_start_list)
  2. 在该函数中,if如果执行块,则len(my_list) > 1那里没有return语句。现在,由于else尚未执行,并且因为这是唯一的包含return子句的位置,因此您将返回默认值None
  3. 如果列表中有0或1个元素,则返回该列表。

要解决此问题,您需要返回由返回的列表process(my_list)

那是:

def process(my_list):
    # do some stuff
    ...
    if len(my_list) > 1:
        return process(my_list)
    else:
        print(my_list)
        return my_list


 类似资料:
  • 问题内容: 我有一些Python代码基本上看起来像这样: 奇怪的是: print(my_list) 打印出正确的内容。但是,第二个打印该函数返回值的打印语句始终打印“无”。即使我用 return(“ abc”) 替换普通的return语句,它仍然是None。 由于该变量的内容似乎在return语句前一行是正确的,所以我不知道从哪里开始调试。是否有可能导致此问题的常见问题? 问题答案: 这是发生了什

  • 到目前为止,我们创建的函数都只是对传入的数据进行了处理,处理完了就结束。但实际上,在某些场景中,我们还需函数将处理的结果反馈回来,就好像主管向下级员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。 Python中,用 def 语句创建函数时,可以用 return 语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return 语句在同一函数中可以出现多次

  • 问题内容: 我刚刚学习(正在学习)函数参数在Python中的工作方式,并且在没有明显原因的情况下开始进行实验: 给出了输出: 哪里来的?还有,这是什么? 问题答案: 它是函数的返回值,您可以将其打印出来。如果没有语句(或者只是没有参数的),则将隐式添加到函数的末尾。 您可能想返回函数中的值,而不是打印它们:

  • 有没有可能创建一个函数,它将lambda函数作为参数(每个lambda函数使用参数),然后返回一个具有单个参数的新函数,并返回所有lambda函数的乘积? 以下是我的非工作示例: 所以本质上,你有一个函数,它需要4个lambda函数,每个函数使用参数。例如,的参数可以类似于。 然后返回一个名为的新函数,该函数的输出是所有lambda函数的乘积,并且有一个参数,该参数传递到的每个lambda函数的参

  • 问题内容: 不确定此问题是否特定于该语言以及如何在中实现。 问题答案: append是一种变异(破坏性)操作(它会在适当位置修改列表,而不是返回新列表)。进行无损等效的惯用方式append是 回答你的问题,我的猜测是,如果返回新修改的列表,用户可能会认为它是非破坏性的,即他们可能会编写如下代码 并期望成为

  • 问题内容: 我在某处读到,函数应始终仅返回一种类型,因此以下代码被视为错误代码: 我想更好的解决方案是 返回None然后创建一个新的空元组不是更便宜的内存明智的选择吗?或者即使在较大的项目中,这种时差也太小而无法引起注意? 问题答案: 为什么函数应该返回一致类型的值?满足以下两个规则。 规则1-函数具有“类型”-输入映射到输出。它必须返回一致的结果类型,否则它不是函数。一团糟。 从数学上讲,我们说