python-PyCharm无法识别字典值类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-PyCharm无法识别字典值类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1467字,纯文字阅读大概需要3分钟。
内容图文
![python-PyCharm无法识别字典值类型](/upload/InfoBanner/zyjiaocheng/665/eca441610916408d90ab07402a5068da.jpg)
我有一个简单的代码段,其中将字典值设置为空列表:
new_dict = {}
for i in range(1, 13):
new_dict[i] = []
现在,如果在下一行的循环中,我将键入new_dict [i]并添加一个点,我希望PyCharm向我显示可用于列表的方法列表,但是在这种简单情况下PyCharm无法识别字典值类型:
为什么会发生,该怎么办?使用PyCharm 2016.1.2,Python 2.7.10.
作为一种解决方法,我可以显式添加type hint,让PyCharm通过添加#类型,使new_dict是一个字典,其中键是整数,值是列表,该语句通过添加#类型:dict [int,list]内联注释:
解决方法:
让我们考虑一个带有变量的稍微复杂的场景:
for i in range(10):
if i%2:
x = 3
else:
x = "hello"
x. #type hint for both int and str
在这种情况下,最后一行将为我们提供所有int和str方法,因为PyCharm能够检测到x可以是int或str
现在,用my_dict [i]替换x的所有出现:
my_dict = {}
for i in range(10):
if i%2:
my_dict[i] = 3
else:
my_dict[i] = "hello"
my_dict[i]. #no type hint :(
所有相同的规则都如上所述适用,我们知道(并且PyCharm可以弄清楚)my_dict [i]将是一个int或一个str.
但是,如果不初始化dict,您会期望发生什么?
def f(my_dict): #or even (my_dict:dict)
my_dict[1]. #cannot possibly expect a type hint
在这种情况下,没有办法知道dict的值是什么,然后像在您的示例情况下一样,添加一个显式注释:
def f(my_dict:"dict[int,list]"):
my_dict[1]. #get all the list methods
这确实加强了The Zen of Python的一些代码:
Explicit is better than implicit.
Readability counts.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
(我包括可读性,因为显式类型提示比潜在的隐式分配要容易得多)
内容总结
以上是互联网集市为您收集整理的python-PyCharm无法识别字典值类型全部内容,希望文章能够帮你解决python-PyCharm无法识别字典值类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。