Рубрики
Без рубрики

Ваша собственная реплика Python за двадцать или меньше

Стандартная библиотека Python позволяет вам использовать пользовательскую реплику. Tagged с Python, веселье.

Вы когда -нибудь были в интерактивной реплике Python и говорили себе: «Знаете, это приятно и все, но … Что -то не хватает. Там недостаточно я ! » Ну, не волнуйся больше! Я покажу вам, как сделать это за двадцать строк или меньше! Позвольте мне представить главную достопримечательность:

Код

Как бы бесполезно это ни звучало, это правда. Python имеет модуль в стандартной библиотеке под названием Код Анкет Вы можете проверить Кодовая документация модуля Если ты мне не веришь. Документация, возможно, немного сложно понять на первом прохождении, поэтому я подумал, что создаю несколько примеров, чтобы показать это. Есть несколько объектов в код Модуль, но только тот, о котором я собираюсь поговорить об этом времени: взаимодействовать .

Взаимодействовать

Давайте погрузимся. Я покажу тебе. Давайте создадим новый файл в нашем каталоге под названием Shell.py Анкет

#!/usr/bin/env python
# I'll be using Python 3, for reference.

import code  # seems silly, but works great

def custom_repl():
    pie = "delicious"
    pi = 3.14159
    homonyms = (pie != pi)
    code.interact(
        banner="Hello!  My name is Jeeves!  I am fancy.  🎩",
        local=locals(),
        exitmsg="Ta-ta!"
    )

if __name__ == "__main__":
    custom_repl()

Попробуйте запустить его и посмотрите магическую работу.

$ python3 shell.py
Hello!  My name is Jeeves!  I am fancy.  🎩
>>> pi
3.1415
>>> pie
'delicious'
>>> homonyms
True
>>> 4 + 3
7
>>> import math
>>> math.sqrt(pi)
1.7724531023414978

Ta-ta!

Как вы можете видеть, показывает на баннерное сообщение, которое мы указали, показывает сообщение о выходе, которое мы указали (хотя оно не сработало для меня, если я использовал встроенный exit () или quit () Команды ), и у нас был доступ к локальным переменным, когда взаимодействовать назывался. И мы можем использовать все, чтобы действовать в качестве нашего местного штата! Вернуться и создать Shell2.py Анкет

#!/usr/bin/env python
# shell2.py

import code

class Car:
    def __init__(self, color, mileage):
        self.color = color
        self.mileage = mileage

    def honk(self):
        return "Beep!"

    def __repr__(self):
        return "".format(self.color, self.mileage)

if __name__ == "__main__":
    c = Car("red", 20000)
    code.interact(
        banner="Now interactively inspecting {}".format(c),
        local={"car": c},
    )

Вернувшись в оболочку … Python3 Shell2.py

Now interactively inspecting 
>>> car

>>> car.honk()
'Beep!'

Имейте в виду, что местный параметр к взаимодействовать должен быть диктом – такой как возвращенным local () и Global () Анкет

Заворачивать

Вы можете использовать это, чтобы обеспечить хороший интерактивный аспект для вашего приложения, чтобы помочь вам делать вещи оболочки, осмотреть объекты, отладка и многое другое. Это примерно как PDB Работает тоже! Django и Flask оба используют вариант этого для своих команд “оболочки”. Я думаю, что я попытаюсь использовать его для создания автоматической викторины или домашней работы для класса Python вступительного класса (подобно пакет вихрь в R ). Есть ли другие классные способы этого? Дай мне знать!

Первоначально опубликовано мой блог

Оригинал: “https://dev.to/rpalo/your-own-python-repl-in-twenty-lines-or-less”