所以,我有一个函数,基本上做到这一点:的Python:为什么我的函数返回None,然后执行
import os
import json
import requests
from openpyxl import load_workbook
def function(data):
statuslist = []
for i in range(len(data[0])):
result = performOperation(data[0][i])
if result in satisfying_results:
print("its okay")
statuslist.append("Pass")
else:
print("absolutely not okay")
statuslist.append("Fail" + result)
return statuslist
然后,我调用这样的函数(我已经添加了错误处理,检查会出现什么在原因绊脚石,我问这个问题)后发生,实际上是由惊讶的结果,因为函数返回None,然后执行:
statuslist = function(data)
print(statuslist)
try:
for i in range(len(statuslist)):
anotherFunction(i)
print("Confirmation that it is working")
except TypeError:
print("This is utterly nonsense I think")
程序的输出则如下:
None
This is utterly nonsense I think
its okay
its okay
its okay
absolutely not okay
its okay
在函数结尾处只有一个return语句,该函数不是递归的,它非常简单,自上而下(但同时解析了大量数据)。
从输出日志看来,函数首先返回None,然后正确执行。我感到困惑,我无法通过互联网找到任何类似的问题(也许我错误地说了这个问题)。 即使代码中存在一些不一致,我仍然期望它返回[]。
将初始列表更改为statuslist = [“WTF”]后,返回值为[]。 为了排除我在函数(数据)中执行的某些其他函数中修改了列表的事实,我已经多次更改了初始列表的名称 - 结果始终超出我的理解范围
我将非常感谢关于调试问题的提示。为什么该函数首先返回值,并在之后执行?
似乎没有足够的信息来重现此。你在第一个函数的for循环中是否指'data [0]'?如果你注释掉了很多代码,那么将其添加回来看看会发生什么? – doctorlove
如果没有'data','performOperation()','satisfying_results'和'anotherFunction',就不能重现问题。 –
不可复制。提供[mcve]。 –