根据“more…”屏幕截图,Pycharm可能正在解释map(),好像逗号周围的两个词都是lambda的一部分,即lambda只返回一个2元组,而不是将其作为map()函数的两个参数。
要尝试的事情:在map()中添加括号
寻找map()内置函数本身的重新定义,这可能会让Pycharm感到困惑
编辑
你激励我去学习更多关于Python和Pycharm的知识。:)
看起来Pycharm更喜欢使用列表理解,而不是使用map()。使用此示例数据:data = {
'data': {
'children': [
{'data': {'url': 'http://1.com/', }, },
{'data': {'url': 'http://2.com/', }, },
]
},
}
如果您像以前那样编写代码,则会出现错误:items = map(lambda children: children['data'], data['data']['children'])
for item in items:
print item['url'] # Pycharm shows warning on 'url'
但是如果你使用列表理解,那么Pycharm很高兴:items = [x['data'] for x in data['data']['children']]
for item in items:
print item['url'] # No warning from Pycharm
两者的输出都是一样的。
不管怎样,现在阅读列表理解比map()更受欢迎,所以也许Pycharm正在推动我们朝这个方向前进?