14. Ինտերակտիվ մուտքագրման խմբագրում և պատմության փոխարինում

Python թարգմանչի որոշ տարբերակներ աջակցում են ընթացիկ մուտքագրման տողի խմբագրմանը և պատմության փոխարինմանը, ինչը նման է Korn shell-ում և GNU Bash shell-ում հայտնաբերված սարքերին: Սա իրականացվում է օգտագործելով GNU Readline գրադարան, որն աջակցում է խմբագրման տարբեր ոճերի: Այս գրադարանն ունի իր սեփական փաստաթղթերը, որոնք մենք այստեղ չենք կրկնօրինակի:

14.1: Ներդիրների լրացում և պատմության խմբագրում

Փոփոխականների և մոդուլների անունների լրացումն է ավտոմատ կերպով միացված է թարգմանչի գործարկման ժամանակ, որպեսզի Tab բանալին կանչում է ավարտման գործառույթը. այն նայում է Python հայտարարությունների անուններին, ընթացիկ տեղական փոփոխականներին և հասանելի մոդուլների անուններին: Կետավոր արտահայտությունների համար, ինչպիսիք են string.a, այն կգնահատի արտահայտությունը մինչև եզրափակիչ '.' այնուհետև առաջարկել լրացումներ ստացված օբյեկտի ատրիբուտներից: Նկատի ունեցեք, որ սա կարող է գործարկել հավելվածի կողմից սահմանված կոդը, եթե օբյեկտը a __getattr__() մեթոդը արտահայտության մի մասն է: Կանխադրված կոնֆիգուրացիան նաև պահպանում է ձեր պատմությունը անունով ֆայլի մեջ .python_history ձեր օգտվողի գրացուցակում: Պատմությունը կրկին հասանելի կլինի թարգմանչի հաջորդ նիստի ընթացքում:

14.2: Ինտերակտիվ թարգմանչի այլընտրանքներ

Այս հնարավորությունը հսկայական առաջընթաց է թարգմանչի ավելի վաղ տարբերակների համեմատ. Այնուամենայնիվ, որոշ ցանկություններ մնացել են. Լավ կլիներ, եթե շարունակական տողերի վրա առաջարկվեր պատշաճ նահանջ (վերլուծողը գիտի, թե արդյոք հաջորդը պահանջվում է ներքևի նշան): Ավարտման մեխանիզմը կարող է օգտագործել թարգմանչի խորհրդանիշների աղյուսակը: Համապատասխան փակագծերը, չակերտները և այլն ստուգելու (կամ նույնիսկ առաջարկելու) հրամանը նույնպես օգտակար կլինի:

Այլընտրանքային ուժեղացված ինտերակտիվ թարգմանիչներից մեկը, որը գոյություն ունի բավականին երկար ժամանակ IPython, որն ունի ներդիրների լրացում, օբյեկտների ուսումնասիրություն և առաջադեմ պատմության կառավարում: Այն կարող է նաև մանրակրկիտ հարմարեցվել և ներկառուցվել այլ հավելվածների մեջ: Մեկ այլ նմանատիպ ուժեղացված ինտերակտիվ միջավայր է bpython.

ArmenianEnglish