为什么我在 IDE 中使用 shift-enter 运行 Python 代码时会出现错误?

问题描述 投票:0回答:3

我是一名新手,尝试在 Mac 上的 Visual Stodio Code 上使用 Python(2.17.15,通过 Anaconda)。我有以下简单的代码:

def function(x):
    y = x + 2
    return y
        

这段代码给我带来了常见的麻烦,一个缩进错误

   return y
    ^
IndentationError: unexpected indent
>>>     return y
  File "<stdin>", line 1
    return y
    ^
IndentationError: unexpected indent
>>>

不用说 Jupyter 或 Spyder 对此没有问题。我检查了 VSC 选项卡上有 4 个空格。所有类似的问题都与此相关,但我无法解决它。

Python 的其他内置函数运行良好。

请给我一些帮助或提示,因为我不知道如何避免这个问题。

再次安装Python3,这个简单的代码可以在 Sublime 上运行,但仍然不能在 VS Code 上运行。我在 VS Code 中仍然遇到同样的错误。

如果我从

return
更改为
print
,而不是使用shift命令调试并运行代码,那么它就可以工作了。

知道发生了什么事吗?

python visual-studio indentation
3个回答
6
投票

这看起来是因为您使用 Shift+ENTER 运行代码。

VS Code 具有以下 2 Shift_ENTER 绑定:

enter image description here

我相信您看到的是其中的第二个,它显示“在 Python 终端中运行选择/行”。我怀疑您的注意力集中在

return y
行上,因此它只运行那一行代码。

如果您在 VS Code 中使用“运行代码”命令而不是 Shift+ENTER,您应该会看到它工作正常:

enter image description here

您可能会想“好吧……那么如果我选择所有代码,这就会起作用,对吗?”我同意......这感觉应该有效。但是,我看到了类似的问题。我会看看是否可以找出原因,但目前您可以使用 VS Code 中的“运行代码”命令,这将执行您想要的操作。如果您突出显示要运行的代码,这将限制执行的内容。

运行代码可以通过

Ctrl+Alt+N

执行

看起来这个问题(所选代码无法使用 Shift+ENTER 正确运行)是一个正在跟踪的错误:https://github.com/Microsoft/vscode-python/issues/2837

解决方法(不理想)是在不缩进的函数之前/之后添加代码,然后也选择并执行这些行:

print("this...")

def function(x):
    y = x + 2
    return y

print("...now works if you select all these lines and Shift+ENTER!")

2
投票

这是来自 python 扩展的错误,您需要在交互模式下运行代码块。

所以在下面的示例代码中:

for lastRun in list(d_RunPanelsPresent.keys()): 

    # some indented commands
    logFile = f"/nexusb/Novaseq/{lastRun}/logPPscript.txt"
    if not os.path.isfile(logFile):
        with open(logFile, 'w+') as f:
            pass
    else:
        pass

如果我如下突出显示(注意光标在哪里):

enter image description here

我会收到错误。

解决办法是在代码编辑器最左边突出显示代码,如下图:

enter image description here

这对我来说 100% 有效。


-1
投票

忘记函数定义末尾的分号会产生相同的错误。

© www.soinside.com 2019 - 2024. All rights reserved.