在Python中的循环内无法识别变量

时间:2016-04-05 12:06:03

标签: python loops

我正在尝试在Python中运行循环,同时在循环内指定变量xy。当我运行以下循环时:

   my_funcs = {}
    for i in range(len(data) - 1):
        def foo(x, y):
            x = data[i]['body']
            y = data[i+1]['body']
            tfidf = vectorizer.fit_transform([x, y])
            return ((tfidf * tfidf.T).A)[0,1]


        foo.func_name = "cosine_sim%d" % i
        my_funcs["cosine_sim%d" % i] = foo
        print(foo(x,y))

我得到了一个奇怪的错误:x is not definedprint(foo(x,y))行中我知道为什么这可能会发生,因为我已经说过x = data[i]['body']

提前致谢

1 个答案:

答案 0 :(得分:2)

如果其他一切都正确,我认为你应该把这个方法移到循环之外。

您只在x内定义了foo,因此print行并不了解它。另外,您正在覆盖x的{​​{1}}参数

foo