我是新手,试图在Mac上的 Visual Stodio代码上使用Python(通过Anaconda通过2.17.15)。我有以下简单代码:
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中遇到相同的错误。
UPDATE2
因此,另一个更新。如果我从return
更改为print
,而不是使用shift命令调试并运行代码,那么它将起作用。
知道发生了什么吗?
答案 0 :(得分:1)
这看起来像是因为您正在使用Shift + ENTER运行代码。
VS Code对Shift_ENTER具有以下 2 绑定:
我相信您会看到其中的第二个,即“在Python终端中运行选择/行。我怀疑您专注于return y
行,因此它仅运行代码。
如果在VS Code中使用“运行代码”命令而不是Shift + Enter,则应该可以正常运行:
您可能会想:“好吧...所以,如果我选择所有代码,那将起作用,对吗?”我同意...这感觉应该可行。但是,我看到了类似的问题。我将看看是否可以找出原因,但是目前您可以在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!")
答案 1 :(得分:1)
这是python extension中的错误,您需要以交互方式运行代码块。
因此在下面的示例代码中:
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
如果我突出显示如下(请注意光标所在的位置):
我会得到一个错误。
解决方案是从代码编辑器的最左侧突出显示代码,如下所示:
这100%的时间对我有用。