هل من الممكن لجعل بيثون تفسير خط النصي سطرا وتوليد الانتاج كما لو كان من قذيفة التفاعلية?[مكررة]
-
02-01-2020 - |
سؤال
النظر في جلسة شل التفاعلية التالية.
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
لا تنتمي إلى StackOverflow