忽略其余的python文件

sds*_*sds 5 python python-2.7

我的python脚本通常在文件的第一部分包含“可执行代码”(函数,类和&c),在末尾包含“测试代码”(交互式实验)。

我想pythonpy_compilepylint&C完全忽略末实验的东西。

我在寻找类似#if 0cpp

如何才能做到这一点?

以下是一些想法及其不好的原因:

  1. sys.exit(0):对于作品python,但不py_compilepylint
  2. 将所有实验代码放在以下位置def test()::我无法再将代码复制/粘贴到pythonREPL中,因为它具有非平凡的缩进
  3. 将所有实验代码放在以下行之间""":emacs不再缩进并正确格式化代码
  4. 始终注释和取消注释代码:我太懒了(是的,这是一个按键,但是我必须记住要这样做!)
  5. 将测试代码放入一个单独的文件中:我想将相关内容放在一起

PS。我的IDE是Emacs,我的python解释器是pyspark

Dun*_*nes 3

使用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)

PySpark 和 IPython

还可以在增强型 Python 解释器 IPython 中启动 PySpark。PySpark 可与 IPython 1.0.0 及更高版本配合使用。要使用 IPython,请在运行 bin/pyspark 时将 IPYTHON 变量设置为 1:1

$ IPYTHON=1 ./bin/pyspark
Run Code Online (Sandbox Code Playgroud)