0

我不明白为什么python找不到我的函数。

我创建一个函数共享:

def share(item):
    if re.findall(r'\bshare',item):                                                               
        return True                                                                               
    return False

我只想用它来过滤列表

item['twurlshort'] = filter(lambda item: not share, item['twurlshort'])

但是蟒蛇说:exceptions.NameError: global name 'share' is not defined

我的过滤器功能在同一类。任何人都知道为什么?

4

1 回答 1

0

Python 不会对此撒谎,因此您的函数不在范围内。

请检查您的功能是

  1. 在顶级范围内,
  2. 或者如果不是,在与调用者相同的范围内,
  3. 或者如果它在另一个模块中,您已经导入了该模块,
  4. 或者如果在同一个类中,你称它为附加到一个实例

在您的情况下,您需要更改两件事:

Class Whatever:
    def share(self, item):
        # ...

item['twurlshort'] = filter(lambda item: not item.share, item['twurlshort'])
于 2013-04-20T16:30:08.950 回答