Случайное изменение приглашения в интерпретаторе Python
Мне кажется скучным всегда видеть приглашение >>>
в Python. Какой был бы лучший способ случайного изменения префикса приглашения?
Я представляю себе такое взаимодействие, как:
This is a tobbaconist!>> import sys
Sorry?>> import math
Sorry?>> print sys.ps1
Sorry?
What?>>
Ответы
Ответ 1
В соответствии с docs, если вы назначаете нестроковый объект sys.ps1
, тогда он будет каждый раз оценивать функцию str
:
Если для любой переменной присваивается нестроковый объект, его str() является переоценивается каждый раз, когда переводчик готовится к чтению нового интерактивная команда; это можно использовать для реализации динамического приглашения.
Хорошо, теперь это очевидно, вы должны сделать его динамичным! Создайте объект с помощью метода __str__
, где вы можете разместить любую логику, которая вам нужна:
class Prompt:
def __str__(self):
# Logic to randomly determine string
return string
Вы также можете вносить изменения или вставлять вещи в этот класс по мере того, как вы тоже. Например, у вас может быть список сообщений в Prompt
, которые вы добавляете или изменяете, и это повлияет на сообщение консоли.
Ответ 2
Попробуйте следующее:
>>> 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
Ответ 3
Для изменения приглашения мы используем
>>>import sys
>>>sys.ps1 = '=>'
=>
Теперь способ сделать это случайным образом будет примерно таким:
import random
import sys
random_prompts = ['->', '-->', '=>', 'Hello->']
sys.ps1 = random.choice(random_prompts)
Чтобы выполнить это при запуске вашего интерпретатора python, вы можете следовать этому руководству: https://docs.python.org/2/tutorial/appendix.html#the-interactive-startup-file
Ответ 4
Хороший вопрос. Запрос >>>
находится в sys.ps1
, ...
в sys.ps2
. Следующий вопрос заключается в том, как изменить это случайным образом. Также как демонстрация изменения вручную:
>>> import sys
>>> sys.ps1 = '<<<'
<<<sys.ps1 = '<<< '
<<< sys.ps2 = '.?. '
<<< for i in line:
.?.