gpt4 book ai didi

python - 为什么我不能在没有手动编辑的情况下粘贴 Pythons REPL 的输出?

转载 作者:太空狗 更新时间:2023-10-30 01:52:35 25 4
gpt4 key购买 nike

大量示例 Python 代码显示了 Python REPL 的输出,例如:

>>> class eg(object):
... def __init__(self, name):
... self.name = name
... def hi(self):
... print "Hi %s" % (self.name)
...
>>> greeter = eg("Bob")
>>> greeter.hi()
Hi Bob
>>>

现在,显然你要做的是运行上面的代码..所以,我运行“python”并将上面的文本粘贴到..

>>> >>> class eg(object):
File "<stdin>", line 1
>>> class eg(object):
^
SyntaxError: invalid syntax
>>> ... def __init__(self, name):
File "<stdin>", line 1
... def __init__(self, name):
^

密码坏了!?..

要让它运行,我必须...

  • 一次复制并粘贴一行,确保我正确复制了所有缩进。如果你搞砸了(比如,错过了一个领先的空间,你必须重新开始)
  • 使用文本编辑器删除>>>...,然后重新粘贴

这不是什么大问题,但是鉴于以这种格式呈现的示例代码数量如此之多,您必须这样做似乎很奇怪......

最佳答案

如何运行/采用“Pythons REPL 的输出”

  • 使用 IPython外壳

    In [99]: %cpaste
    Pasting code; enter '--' alone on the line to stop.
    :>>> class eg(object):
    :... def __init__(self, name):
    :... self.name = name
    :... def hi(self):
    :... print "Hi %s" % (self.name)
    :...
    :>>> greeter = eg("Bob")
    :>>> greeter.hi()
    :--
    Hi Bob
  • 使用功能强大的文本编辑器(例如,C-x r k 会杀死 Emacs 中的矩形区域)

  • 使用 doctest模块

首先在没有 shell 提示的情况下进行复制(尽管我不知道如何在 Google Chrome 上执行此操作)。

为什么使用doctest格式

将以下内容保存到documentation.txt:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim adminim veniam, quis nostrud exercitation ullamco laboris nisi utaliquip ex ea commodo consequat. >>> class eg(object):...     def __init__(self, name):...             self.name = name...     def hi(self):...             print "Hi %s" % (self.name)... >>> greeter = eg("Bob")>>> greeter.hi()Hi Bob>>>Duis aute irure dolor in reprehenderit in voluptate velit esse cillumdolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat nonproident, sunt in culpa qui officia deserunt mollit anim id estlaborum.

Run:

$ python -c "import doctest; doctest.testfile('documentation.txt')" -v

输出:

Trying:
class eg(object):
def __init__(self, name):
self.name = name
def hi(self):
print "Hi %s" % (self.name)
Expecting nothing
ok
Trying:
greeter = eg("Bob")
Expecting nothing
ok
Trying:
greeter.hi()
Expecting:
Hi Bob
ok
1 items passed all tests:
3 tests in doctest.txt
3 tests in 1 items.
3 passed and 0 failed.
Test passed.

如果您在模块末尾添加以下代码片段,它将测试其文档字符串中的所有代码:

if __name__=="__main__":
import doctest; doctest.testmod()

QED

关于python - 为什么我不能在没有手动编辑的情况下粘贴 Pythons REPL 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com