16. پیوست¶
16.1. حالت تعاملی¶
دو نوع از حالت تعاملی REPL وجود دارد. مفسر پایهی کلاسیک در تمامی پلتفرمها با حداقل امکانات برای ویرایش خط فرمان پشتیبانی میشود.
از پایتون ۳٫۱۳ به بعد، بهطور پیشفرض یک شل تعاملی جدید استفاده میشود. این شل از رنگ، ویرایش چندخطی، مرور تاریخچه، و حالت چسباندن «paste mode» پشتیبانی میکند. برای غیرفعال کردن رنگ، جزئیات را در Controlling color ببینید. کلیدهای تابعی برخی از قابلیتهای اضافی را فراهم میکنند. F1 مرورگر تعاملی راهنما pydoc را فعال می کند. F2 اجازه میدهد تاریخچه خط فرمان را بدون خروجی و بدون اعلان های >>> و ... مرور کنید. F3 حالت "چسباندن" را فعال می کند که چسباندن بلوکهای بزرگتر کد را آسانتر میسازد. برای بازگشت به اعلان معمولی، F3 را فشار دهید.
وقتی از پوستهی تعاملی جدید استفاده میکنید، با تایپ 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 مراجعه کنید.
پاورقیها