You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Pylance提示‘num未被访问’?明明已在列表推导式中使用

Pylance误报"num is not accessed"的原因及解决办法

问题场景

使用Python 3.12.5在VS Code中编写以下代码:

my_list: list[str] = ["MFI BL {num}" for num in range(1, 15)]

明明num变量在f-string中被直接引用,但Pylance却错误提示警告"num" is not accessed。即使添加print(my_list)确保my_list被使用,该警告依然存在,而PyCharm中无此问题。

原因分析

这是Pylance的语法检测逻辑bug:在列表推导式前直接添加变量类型标注的场景下,Pylance未能正确识别f-string内部的变量引用,误判num未被访问。Python语法本身没有问题,PyCharm能正常解析也验证了这一点。

临时解决方法

  • 将类型标注与变量赋值拆分到不同行:
    my_list = ["MFI BL {num}" for num in range(1, 15)]
    my_list: list[str]
    
  • 改用字符串格式化的替代写法(仅作临时规避,不推荐长期使用):
    my_list: list[str] = ["MFI BL {}".format(num) for num in range(1, 15)]
    
  • 在VS Code设置中针对性忽略该警告(谨慎使用,会关闭所有未使用变量的警告):
    在settings.json中添加配置:
    "python.analysis.diagnosticSeverityOverrides": {
      "unused-variable": "none"
    }
    

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:20:58