PyCharm中namedtuple出现意外参数与未填充参数警告求助
解决PyCharm对namedtuple多行字段名的参数警告问题
问题场景
用collections.namedtuple时,通过多行字符串声明field_names,代码实际运行完全正常,但PyCharm会弹出「Unexpected argument」和「unfilled parameter」的检查警告。
示例声明代码:
from collections import namedtuple InstTyp = namedtuple( typename='InstTyp', field_names=''' instance_type memory num_cpus ''' )
示例实例化代码:
it = InstTyp( instance_type='tx', memory=64, num_cpus=8 )
问题根源
PyCharm的静态代码分析工具没法正确解析带换行、缩进的多行字符串字段名——虽然Python运行时会自动忽略这些空白字符,但PyCharm的静态检查做不到这一点,它没法识别出清洗后的字段列表,所以误判参数不匹配。
可行解决办法
1. 改用列表声明字段名
直接把字段名放进列表,PyCharm能完美识别每个字段,不会再报错:
from collections import namedtuple InstTyp = namedtuple( typename='InstTyp', field_names=[ 'instance_type', 'memory', 'num_cpus' ] )
2. 对多行字符串显式做空白处理
如果坚持要用多行字符串格式,给字符串加上.split()方法,自动处理换行和缩进,PyCharm就能识别到正确的字段列表了:
from collections import namedtuple InstTyp = namedtuple( typename='InstTyp', field_names=''' instance_type memory num_cpus '''.split() )
3. 单独禁用该位置的警告
不想改代码的话,在实例化代码上方加注释,单独屏蔽这两个警告:
# noinspection PyArgumentList it = InstTyp( instance_type='tx', memory=64, num_cpus=8 )
(不推荐全局修改PyCharm检查规则,会影响其他代码的参数校验)
内容的提问来源于stack exchange,提问作者Brian Fitzgerald
相关产品推荐
相关产品推荐

