Pycharm:期望的类型'Integral',而不是'str'

ava*_*chy 10 python pycharm

我刚刚安装了PyCharm 3.4并获得了一些新的警告.不只是在这里,而是在很多地方.代码当然没问题.有人可以翻译PyCharm试图告诉我的内容以及如何沉默这些消息吗?

截图 更多...

Dav*_*ope 8

基于'more ...'截图,看起来像Pycharm可能正在解释map(),好像逗号周围的两个术语都是lambda的一部分,即lambda只返回一个2元组而不是处理它作为map()函数的两个参数.

要尝试的事情:

  • 在地图中添加括号()
  • 寻找map()的重新定义本身可能会让Pycharm感到困惑

编辑

你激励我去了解Python和Pycharm的更多信息.:)

看起来Pycharm使用列表理解比使用列表理解更快乐map().使用此示例数据:

data = {
    'data': {
        'children': [
            {'data': {'url': 'http://1.com/', }, },
            {'data': {'url': 'http://2.com/', }, },
        ]
    },
}
Run Code Online (Sandbox Code Playgroud)

如果你像你一样编写代码,那么你得到错误:

items = map(lambda children: children['data'], data['data']['children'])
for item in items:
    print item['url']  # Pycharm shows warning on 'url'
Run Code Online (Sandbox Code Playgroud)

但是如果你使用列表理解,那么Pycharm很高兴:

items = [x['data'] for x in data['data']['children']]
for item in items:
    print item['url']  # No warning from Pycharm
Run Code Online (Sandbox Code Playgroud)

两者的输出相同.

map()无论如何,ISTR阅读列表理解比现在更受欢迎,所以也许Pycharm正朝这个方向推动我们?

  • 为什么列表推导优于`map()`? (3认同)

t_i*_*_io 5

如果您使用 . 从字典中获取值,您也可以摆脱此通知get()。这应该有效: fresh_urls = {item.get('url') for item in items}