次のような辞書を取る関数があります:
result = {
"testsUntaken" = ["format", "structure"],
"testsFailed" = []
"testsPassed" = []
"otherstuff" = "otherstuff"
}
これが機能です。
def take_tests(result):
"""Recursively runs the tests in the testsUntaken list until it is empty"""
testsList = {
"format": allowed_file,
"structure": allowed_structure
}
if len(result["testsUntaken"]) > 0:
test = result["testsUntaken"][0]
if testsList[test](result):
result["testsPassed"].append(test)
else:
result = rejection(result, test)
result["testsUntaken"].remove(test)
result = take_tests(result)
return result
if __name__ == "__main__":
print("something unrelated")
驚いたことに、この関数は別のファイルから呼び出すと完全に機能しますが、「メイン「私は得る:
File "my_file.py", line 56, in take_tests
if len(result["testsUntaken"]) > 0:
TypeError: string indices must be integers
これは警戒ですが、クラスとして書き直しただけでうまくいきました。初期化された結果ディクショナリが既にスコープにある場合、問題はないようです。