【发布时间】:2019-12-13 09:44:03
【问题描述】:
出于某种原因,PyCharm 告诉我,我的 5 个列表中有 3 个没有在我的函数中使用,但它们实际上正在函数中使用,并且代码以预期的结果完成。
这是奇怪的行为。这是一个错误吗?
我看到f-strings 报告误报的一些问题,但我认为这不是同一个问题。
def filter_for_vzb_vzt(self, query_results):
vzb_list = []
vzt_list = []
vzt_analyst_tkr = []
vzb_analyst_tkr = []
vzb_lpc_analyst_tkr = []
with open('./Files/{}.json'.format('VZT_ACNA_LIST'), 'r') as df:
vzt_analyst_tkr = json.load(df)
with open('./Files/{}.json'.format('VZB_TAX_ACNA_LIST'), 'r') as df:
vzb_analyst_tkr = json.load(df)
with open('./Files/{}.json'.format('VZB_LPC_ACNA_LIST'), 'r') as df:
vzb_lpc_analyst_tkr = json.load(df)
self.process_vzb_mass(vzb_list, vzb_analyst_tkr, vzb_lpc_analyst_tkr)
self.process_vzt_mass(vzt_list, vzt_analyst_tkr)
self.active_time = False
【问题讨论】:
-
如果将
vzt_analyst_tkr = json.load(df)替换为vzt_analyst_tkr.append(0)会发生什么?我的猜测是你在重新分配它之前从不使用它,所以 PyCharm 认为它是未使用的。你最好不要在顶部声明它,因为with语句不会在 Python 中创建自己的范围。 -
@MichaelKolber 这是有道理的。这可能是通知的原因。很高兴知道 with 语句也不会创建自己的范围。泰。很难打破总是在函数顶部声明所有变量的习惯。但我更不喜欢烦人的通知,所以我将删除
with之前的那 3 行。 -
没问题。作为一般规则,Python 没有block-level scope。
-
我个人说明,这三个变量不需要创建为
lists,对吗? -
@Trenton_M 不,他们没有,但为了便于阅读,它可以帮助读者了解这些变量是列表,而无需查看 with open 语句正在生成什么。
标签: python methods pycharm false-positive