16. پیوست¶
16.1. حالت تعاملی¶
دو نوع از حالت تعاملی REPL وجود دارد. مفسر پایهٔ کلاسیک در تمامی پلتفرمها با حداقل امکانات برای ویرایش خط فرمان پشتیبانی میشود.
On Windows, or Unix-like systems with curses support,
a new interactive shell is used by default since Python 3.13.
This one supports color, multiline editing, history browsing, and
paste mode. To disable color, see Controlling color for
details. Function keys provide some additional functionality.
F1 enters the interactive help browser pydoc.
F2 allows for browsing command-line history with neither output nor the
>>> and ... prompts. F3 enters "paste mode", which
makes pasting larger blocks of code easier. Press F3 to return to
the regular prompt.
وقتی از پوسته تعاملی جدید استفاده میکنید، با تایپ exit یا quit از پوسته خارج شوید. اضافهکردن پرانتز پس از این دستورات ضروری نیست.
اگر پوسته تعاملی جدید مطلوب نباشد، می توان آن را از طریق متغیر محیطی PYTHON_BASIC_REPL غیرفعال کرد.
16.1.1. مدیریت خطاها¶
موقع بروز خطا، مفسر یک پیام خطا و «گزارش پشته» «stack trace» چاپ میکند. در حالت تعاملی، بعد از نمایش خطا، برنامه به حالت آمادهباش برای دریافت دستورات جدید بازمیگردد؛ اما اگر ورودی از یک فایل آمده باشد، پس از چاپ گزارش پشته با یک کد خروجی غیر صفر از برنامه خارج میشود. (استثناهایی که با بخش except در یک دستور try مدیریت میشوند، در این زمینه خطا محسوب نمیشوند.) بعضی خطاها بهطور قطعی باعث خروج از برنامه میشوند و کد خروجی غیر صفر دارند؛ این در مورد ناسازگاریهای داخلی یا در برخی موارد کمبود حافظه صدق میکند. تمام پیامهای خطا در جریان خروجی خطا «standard error» نوشته میشوند؛ خروجی معمول دستورات اجراشده نیز در جریان خروجی استاندارد «standard output» نوشته میشود.
فشردن کلید وقفه (که معمولاً Control-C یا Delete است) در اعلان اصلی یا فرعی، ورودی را لغو کرده و کاربر را به اعلان اصلی بازمیگرداند. [1]
فشردن کلید وقفه در حین اجرای یک دستور، استثنای KeyboardInterrupt را ایجاد میکند که میتوان آن را با دستور try مدیریت کرد.
16.1.2. اسکریپت های اجرایی پایتون¶
در سیستم عامل های یونیکس مبتنی بر BSD، اسکریپت های پایتون می توانند مانند اسکریپت های شل به صورت مستقیم اجرایی شوند، با قرار دادن خط
#!/usr/bin/env python3
(با فرض اینکه مفسر در PATH کاربر قرار دارد) در ابتدای اسکریپت باید قرار گیرد و فایل باید به حالت قابل اجرا تنظیم شود. #! باید نخستین دو نویسهی فایل باشند. در برخی پلتفرمها، این خط اول باید با پایان خط به سبک یونیکس ('\n') تمام شود، نه پایان خط ویندوزی ('\r\n'). توجه داشته باشید که نویسهی '#' برای آغاز یک توضیح (کامنت) در پایتون به کار میرود.
با استفاده از دستور chmod میتوان به اسکریپت حالت اجرایی یا مجوز اجرا داد.
$ chmod +x myscript.py
در سیستمعامل ویندوز، مفهوم «حالت اجرایی» "executable mode" وجود ندارد. نصبکننده پایتون بهطور خودکار فایلهای .py را به python.exe مرتبط میکند تا با دوبار کلیک روی فایل پایتون، بهعنوان اسکریپت اجرا شود. پسوند فایل همچنین میتواند .pyw باشد که در این صورت پنجره کنسولی که معمولاً ظاهر میشود، نمایش داده نمیشود.
16.1.3. پروندهٔ آغازین تعاملی «The Interactive Startup File»¶
هنگامی که به صورت تعاملی از پایتون استفاده می کنید، اجرای برخی دستورات استاندارد در هر بار شروع مفسر می تواند مفید باشد. شما می توانید این کار را با تنظیم متغیر محیطی با نام PYTHONSTARTUP به نام فایلی که حاوی دستورات شروع شما است انجام دهید. این قابلیت شبیه به ویژگی .profile در شل های یونیکس است.
این فایل فقط در جلسات تعاملی خوانده می شود، نه زمانی که پایتون دستورات را از یک اسکریپت می خواند، و نه زمانی که /dev/tty به عنوان منبع صریح دستورات داده می شود (که در غیر این صورت همچون یک جلسه تعاملی رفتار می کند). این فایل در همان فضای نامی که در آن دستورات تعاملی اجرا می شوند، اجرا می گردد بنابراین اشیایی که تعریف یا وارد می کند می توانند بدون مشخص شدن در جلسه تعاملی مورد استفاده قرار گیرند. شما می توانید درخواست ها sys.ps1 و sys.ps2 را نیز در این فایل تغییر دهید.
اگر می خواهید یک فایل راه اندازی اضافی از دایرکتوری فعلی بخوانید، می توانید این کار را در فایل راه اندازی عمومی با کدی مشابه if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) برنامه ریزی کنید. اگر می خواهید از فایل راه اندازی در یک اسکریپت استفاده کنید، باید این کار را به طور صریح در اسکریپت انجام دهید:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. ماژول های سفارشی سازی¶
پایتون دو نقطهٔ اتصال برای سفارشی سازی ارائه می دهد: sitecustomize و usercustomize. برای دیدن چگونگی کارکرد آن، ابتدا باید مکان دایرکتوری user site-packages خود را پیدا کنید. پایتون را اجرا کنید و این کد را اجرا کنید:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
حالا میتوانید فایلی به نام usercustomize.py در آن دایرکتوری ایجاد کرده و هر چیزی که میخواهید در آن قرار دهید. این فایل روی هر بار اجرای پایتون تأثیر خواهد گذاشت، مگر اینکه پایتون با گزینه -s اجرا شود تا وارد کردن خودکار غیرفعال گردد.
sitecustomize به همان صورت کار می کند، اما به طور معمول توسط مدیر سیستم در دایرکتوری global site-packages ایجاد می شود و قبل از usercustomize وارد می شود. برای جزئیات بیشتر به مستندات ماژول site مراجعه کنید.
پاورقی ها