2015-12-23 1 views
1

В оболочке python, если я нахожу a = 2, ничего не печатается. Если я напечатаю a 2, печатается автоматически. Принимая во внимание, что это не происходит, если я запускаю сценарий из режима ожидания.Имитировать поведение оболочки (сила eval последней команды для отображения)

Я хотел бы подражать этому оболочечному поведению, используя python C api, как это делается?

Например, выполнение этого кода PyRun_String("a=2 \na", Py_file_input, dic, dic); с C не будет печатать ничего как выход. Я хотел бы моделировать поведение, подобное оболочке, так что, когда я выполняю предыдущую команду, значение «2» сохраняется в строке. Можно ли сделать это легко, либо с помощью команд python, либо из C api? В принципе, как это делает оболочка python?

+0

['PyRun_InteractiveLoop'] (https://docs.python.org/2/c-api/veryhigh.html#c.PyRun_InteractiveLoop)? Тем не менее, это даст вам реальную интерактивную подсказку. – user2357112

ответ

1

Чтобы скомпилировать код так, чтобы выражение выражения вызывало sys.displayhook, вам необходимо передать Py_single_input в качестве параметра start, и вам нужно указать один оператор за раз.

+0

Значит, вам не разрешено определять à fonction в этом режиме? Или разрешено ли прерывание линии IS? – lezebulon

+0

@lezebulon: Определение функции - это одно утверждение (составные утверждения - все в порядке). Я не думаю, что вы можете поместить пустые строки в составные заявления. – user2357112

+0

Кроме того, что, если я хочу сохранить строку résultats в памяти и не передать ее в std :: coût? Благодаря! – lezebulon

Смежные вопросы