VS代码:如何在python中查找变量的所有引用?

mon*_*ker 6 python pycharm visual-studio-code

我想要一个VS Code功能,例如Pycharm中的Find Usages,它可以找到一个变量的所有读和写。以一个简单的文件为例:

class Foo:
    def __init__(self, bar):
        self.bar = bar

    def do_something(self):
        bar1 = "hhhhh"
        if bar1 == self.bar:
            print("do something")
Run Code Online (Sandbox Code Playgroud)

在Pycharm中,使用以下内容的“查找用法” self.bar

查找用法屏幕截图

我已经尝试过“查找所有引用”,但是它不起作用:

查找所有参考屏幕截图

因为它没有找到if bar1 == self.bar:

更新:搜索只是出现不是我要的,因为它只匹配包含相同名称的其他变量以及注释中出现的关键字。

更新:原来是Microsoft python语言服务器中的一个已知问题:github.com/microsoft/python-language-server/issues/1174

小智 5

使用 Microsoft 的 pylance 语言服务(2020 年 7 月新增)时,“查找所有引用”功能在 VS Code 中运行良好https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance

右键单击符号,然后从上下文菜单中选择“查找所有引用”。这很有效,甚至可以找到工作空间内不同模块中引用的方法。


mon*_*ker 4

我的 python 扩展选项的用户设置为 false 时出现问题jediEnabled

"python.jediEnabled": false,
Run Code Online (Sandbox Code Playgroud)

所以切换回默认值:

// Enables Jedi as IntelliSense engine instead of Microsoft Python Analysis Engine.
  "python.jediEnabled": true,
Run Code Online (Sandbox Code Playgroud)

并且“查找所有引用”在示例中有效!

也许这是 Microsoft Python 分析引擎中的一个错误。