как работает IPython?оператор на самом деле работает? - PullRequest
2 голосов
/ 27 марта 2012

Поэтому я подумал, что для реализации такой функции в консольном приложении, где добавление знака вопроса в конце имени функции приведет к появлению строки документа, я бы, вероятно, использовал такую ​​функцию, как метаклассы, где после определения / импорта я продублирую все имена членов модуля и создам новые только для того, чтобы печатать строки документа.

Затем я заметил, что вам не нужны настоящие скобки для вызова вспомогательных функций, и python фактически не позволяет вам поставить вопросительный знак в конце имени функции в любом случае .... Так же это и делается в python или я просто трачу свое время, пытаясь понять это?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Это не так, как вы себе представляете. ipython считывает ввод вашей командной строки в виде строки текста, поэтому у него есть возможность проверить, заканчивается ли он знаком вопроса, прежде чем передать его на eval (или как угодно). Если это так, он запускает help(name) вместо того, что вы ввели.

AST выглядит немного сверхпрочно, но вы можете почувствовать, как это работает, проверив модуль code. Это дает вам легкий интерпретатор, который вы можете расширить с помощью синтаксиса такого рода, если хотите.

0 голосов
/ 30 октября 2012

Посмотрите на модуль IPython.core.inputsplitter для кода, который анализирует необработанную строку ввода для таких вещей, как?,!, /,% И т. Д.

0 голосов
/ 27 марта 2012

ipython использует AST , вы можете настроить синтаксический анализ и создать новый форк ipython.

может помочь

...