将函数作为arg传递时的NameError

时间:2017-10-12 21:55:35

标签: python function arguments nameerror

我有一个python函数test(),它会循环显示问题并提示答案并在结尾处对结果进行评分。我想传递不同的,但可选的修改test()函数,如shuffle()问题或反向()问题,或odds_only()等。当我尝试将这些函数传递到test()时,如此,我得到一个nameError。有人可以帮我理解我哪里出错了吗?

>>> my.test(mod=shuffle)
... NameError: name 'shuffle' is not defined


def test(self, mod=None):
    if mod is not None:
        return_value = mod()

def shuffle(self):
    list_of_questions = list(self.dictionary.keys())
    random.shuffle(list_of_questions)
    return list_of_questions

1 个答案:

答案 0 :(得分:2)

如果test和shuffle都是同一个类的方法,那么调用应该是:

my.test(mod=my.shuffle)