所以,我有一個函數,基本上做到這一點:的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]。 –