从Python列表中筛选出'None','str'对象不可调用

从Python列表中筛选出'None','str'对象不可调用,python,exception,typeerror,Python,Exception,Typeerror,我的脚本执行LDAP搜索: import ldap ...<initializations> res = conn.search_s(base, scope_level, filter, attrs) _logger.debug("LDAP query result: %s", res) # Filter out the 'None' entries for referrals filter(lambda x: (isinstance(x,tuple) and x[0] is no

我的脚本执行LDAP搜索:

import ldap
...<initializations>
res = conn.search_s(base, scope_level, filter, attrs)
_logger.debug("LDAP query result: %s", res)

# Filter out the 'None' entries for referrals
filter(lambda x: (isinstance(x,tuple) and x[0] is not None), res)
如果我在一个单独的脚本中复制列表并运行相同的过滤器,它将按预期工作

用于更换过滤器的构造也可以正常工作:

result = []
for each in res:
if (isinstance(each, tuple) and each[0] is not None):
    result.append(each)

但我想调试一下为什么过滤器失败了,

正如@101的评论所建议的那样,过滤器关键字也被用作参数名称,这与我观察问题的方法相同

筛选器参数是字符串,因此为TypeError


只需将参数名称更改为ldap_filter即可修复它

是否重新分配了filter关键字?啊,很好。让我查一下!!是的,就是这样。该方法正在接受筛选器作为LDAP筛选器参数。最近有人做出了这样的改变:这就是为什么我要求我的同事不要使用vim,而是使用一些pythonide@米塔尔:否则,你可以告诉那个同伴修复他/她的vim,这样它就会显示这些错误:P@101请你们中的一位回答,把这个问题从未回答的问题列表中去掉。
result = []
for each in res:
if (isinstance(each, tuple) and each[0] is not None):
    result.append(each)