随机更改Python解释器中的提示

mir*_*ngu 37 python prompt python-interactive

总是>>>在Python中看到提示是很无聊的.什么是随机更改提示前缀的最佳方法?

我想象一下这样的互动:

This is a tobbaconist!>> import sys
Sorry?>> import math
Sorry?>> print sys.ps1
Sorry?
What?>>
Run Code Online (Sandbox Code Playgroud)

Sup*_*Man 67

根据文档,如果你分配一个非字符串对象,sys.ps1那么str它每次都会评估它的功能:

如果将非字符串对象分配给任一变量,则每次解释器准备读取新的交互式命令时,都会重新评估其str(); 这可以用来实现动态提示.

那么现在很明显,你应该让它充满活力!使用__str__可以放置所需逻辑的方法创建对象:

class Prompt:
    def __str__(self):
        # Logic to randomly determine string
        return string
Run Code Online (Sandbox Code Playgroud)

您也可以随时进行更改或将内容插入到此类中.因此,例如,您可以在Prompt其中附加或更改消息列表,这将影响控制台消息.


Kla*_* D. 21

试试这个:

>>> import sys
>>> import random
>>> class RandomPrompt(object):
...     prompts = 'hello >', 'hi >', 'hey >'
...     def __repr__ (self): return random.choice(self.prompts)
... 
>>> sys.ps1 = RandomPrompt()
hello >1
1
hi >2
2
Run Code Online (Sandbox Code Playgroud)

  • @glglgl,通过调用`__str __()`生成提示.如果它没有定义,则默认为`__repr __()`所以在这种情况下,无论哪个都没关系. (6认同)

Yas*_*tra 19

为了更改提示,我们使用

>>>import sys
>>>sys.ps1 = '=>'
=>
Run Code Online (Sandbox Code Playgroud)

现在随机做的方式是这样的:

import random
import sys

random_prompts = ['->', '-->', '=>', 'Hello->']
sys.ps1 = random.choice(random_prompts)
Run Code Online (Sandbox Code Playgroud)

要在python解释器启动时执行此操作,可以按照本指南操作:https://docs.python.org/2/tutorial/appendix.html#the-interactive-startup-file


ser*_*inc 8

好问题.该>>>提示是sys.ps1,在...sys.ps2.接下来的问题是如何随机改变这一点.就像手动更改它的演示一样:

>>> import sys
>>> sys.ps1 = '<<<'
<<<sys.ps1 = '<<< '
<<< sys.ps2 = '.?. '
<<< for i in line:
.?. 
Run Code Online (Sandbox Code Playgroud)