هل من الممكن لجعل بيثون تفسير خط النصي سطرا وتوليد الانتاج كما لو كان من قذيفة التفاعلية?[مكررة]

StackOverflow https://stackoverflow.com//questions/25088718

سؤال

النظر في جلسة شل التفاعلية التالية.

Python 2.7.5+ (default, Feb 27 2014, 19:37:08) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>> 2+5
7
>>> "foo"
'foo'
>>> 

لاحظ كيف ، بعد كل سطر ، سوف المترجم صدى النتيجة إلى وحدة التحكم.

إذا وضعت تلك الأوامر الثلاثة نفسها في برنامج نصي Foo.py بدون بيانات مطبوعة, ، لن يكون هناك مخرجات تم إنشاؤها.

هل هناك طريقة لإجبار مترجم بايثون على توليد نفس الناتج كما هو الحال في الوضع التفاعلي دون تعديل التعليمات البرمجية لإدراج بيانات الطباعة يدويا?

هل كانت مفيدة؟

المحلول

import code
console = code.InteractiveConsole()
prompt = '>>>'
source = '''
1 + 1
2+5
"foo"
x = 1
x
y = (2+
     3)
y + x     
'''.splitlines()
for line in source:
    print('{p} {l}'.format(p=prompt, l=line.rstrip()))
    prompt = '...' if console.push(line) else '>>>'

غلة

>>> 
>>> 1 + 1
2
>>> 2+5
7
>>> "foo"
'foo'
>>> x = 1
>>> x
1
>>> y = (2+
...      3)
>>> y + x
6
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top