LINUX.ORG.RU

IronPython: нет строкового представления объекта в случае отсутствия явного print-а

 , ,


0

2

Уважаемые разработчики, может ли кто-нибудь посодействовать в этом вопросе: http://www.cyberforum.ru/csharp-net/thread586402.html

А именно:

В интерпретаторе python2 можно выполнить примерно такой код:

>>> print 2 + 2
4
[quote][quote][quote] 1 + 1[br][/quote][/quote][/quote]2
[quote][quote][quote] print 3 + 3[br][/quote][/quote][/quote]6
В случае IronPython
            var python = Python.CreateEngine();
            var scope = python.CreateScope();
            
            python.Execute(@"print 2+2", scope);
            python.Execute(@"1+1", scope);
            python.Execute(@"print 3+3", scope);
            Console.ReadKey();
Такой код выводит у меня на консоль 4, затем 6. Вопрос - где 1? Другой пример:
>>> object()
<object object at 0xb73ca4d0>
В IronPython я не вижу строкового представления объекта в случае отсутствия явного print-а - куда попадают такие объекты и можно ли их как-либо поймать в IronPython?

Не то я знаю что есть ironPython... но в обычном питоне если в программе (не в консоли интерпретатора) написать 1+1, то результат в stdout тоже не пойдет ес-но.

Интерпретатор питона в интерактивном режиме выводит repr от результата вычисления выражения, если этот результат не None. Ну это фича такая... а программа на питоне что то печатает, только если ее об этом попросить.

AIv ★★★★★ ()
Ответ на: комментарий от AIv

Все оказалось гораздо проще - Execute возвращает значение, как раз то, которое было просто «брошено» без print-ов и прочего.

omegatype ★★★ ()

Вы ожидали, что выполнение выражения без явного принта не в рамках REPL выведет что-то в консоль? Оптимистично.

buddhist ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.