我的python脚本通常在文件的第一部分包含“可执行代码”(函数,类和&c),在末尾包含“测试代码”(交互式实验)。
我想python,py_compile,pylint&C完全忽略末实验的东西。
我在寻找类似#if 0的cpp。
如何才能做到这一点?
以下是一些想法及其不好的原因:
sys.exit(0):对于作品python,但不py_compile和pylintdef test()::我无法再将代码复制/粘贴到pythonREPL中,因为它具有非平凡的缩进""":emacs不再缩进并正确格式化代码PS。我的IDE是Emacs,我的python解释器是pyspark。
使用ipython而不是python用于 REPL 它具有更好的代码完成和自省,当您粘贴缩进的代码时,它可以自动“取消缩进”粘贴的代码。
因此,您可以将实验代码放入测试函数中,然后粘贴各个部分,而不必担心代码缩进。
如果您粘贴的大块可以被视为单独的块,那么您将需要使用%paste或%cpaste魔法。
例如。
for i in range(3):
i *= 2
# with the following the blank line this is a complete block
print(i)
Run Code Online (Sandbox Code Playgroud)
使用普通粘贴:
In [1]: for i in range(3):
...: i *= 2
...:
In [2]: print(i)
4
Run Code Online (Sandbox Code Playgroud)
使用%paste
In [3]: %paste
for i in range(10):
i *= 2
print(i)
## -- End pasted text --
0
2
4
In [4]:
Run Code Online (Sandbox Code Playgroud)
还可以在增强型 Python 解释器 IPython 中启动 PySpark。PySpark 可与 IPython 1.0.0 及更高版本配合使用。要使用 IPython,请在运行 bin/pyspark 时将 IPYTHON 变量设置为 1:1
Run Code Online (Sandbox Code Playgroud)$ IPYTHON=1 ./bin/pyspark