我想使用 vscode 和 jupyter 进行交互式 python 编程。一切正常,除了单元格/ block 仅在未缩进或代码未缩进时才能被识别。以前,我在可能的情况下使用了spyder。
我喜欢这种行为,因为当您有较长的类或函数定义(缩进)但只想交互地运行类/函数中的几行时,它对于调试和开发很有用。
我尝试过官方的 python 扩展和 Don Jayamanne juypter 扩展。没有一个允许所需的行为。
<小时/>
更新:我刚刚发现不同的 python 版本在这方面的行为有所不同。对于 python 3.6.6 和 3.7.2,缩进会引发错误,而对于 python 3.6.7 或 3.6.8,缩进将被忽略并执行单元格。是否有解释为什么不同版本的行为不同或有明确的设置来处理这个问题?
#%%
print('This works')
#%%
print('This does not work, as it raises an indent error')
print('Update: This works in python version 3.6.7 or 3.6.8')
#%%
print('This does not work, as it is not recognized as a cell/block')
Python 使用空格缩进而不是大括号或关键字来分隔 block 。 VSC Jupyter 扩展创建者似乎并没有特意解决这个问题。
一个技巧是在单元格的开头添加一个 true if 语句,如下所示:
#%%
if 1: # indent for emphasis
print('This works')
我是一名优秀的程序员,十分优秀!