rlcompleter --- تابع تکمیل برای GNU readline¶
کد منبع: Lib/rlcompleter.py
ماژول rlcompleter یک تابع تکمیل مناسب برای ارسال به set_completer() در ماژول readline تعریف میکند.
هنگامی که این ماژول در یک سکوی یونیکسی که ماژول readline در آن در دسترس باشد ایمپورت شود، نمونهای از کلاس Completer بهطور خودکار ایجاد میشود و متد complete() آن بهعنوان تکمیلکننده readline تنظیم میشود. این متد امکان تکمیل شناسهها و کلیدواژههای معتبر پایتون را فراهم میکند.
مثال:
>>> import rlcompleter
>>> import readline
>>> readline.parse_and_bind("tab: complete")
>>> readline. <TAB PRESSED>
readline.__doc__ readline.get_line_buffer( readline.read_init_file(
readline.__file__ readline.insert_text( readline.set_completer(
readline.__name__ readline.parse_and_bind(
>>> readline.
ماژول rlcompleter برای استفاده در حالت تعاملی پایتون طراحی شده است. مگر اینکه پایتون با گزینه -S اجرا شود، این ماژول بهطور خودکار ایمپورت و پیکربندی میشود (به پیکربندی Readline مراجعه کنید).
در سکوهای فاقد readline، همچنان میتوان از کلاس Completer تعریفشده توسط این ماژول برای اهداف سفارشی استفاده کرد.
- class rlcompleter.Completer¶
اشیای Completer متد زیر را دارند:
- complete(text, state)¶
تکمیل ممکن بعدی برای text را برمیگرداند.
هنگامی که توسط ماژول
readlineفراخوانی میشود، این متد بهصورت متوالی باstate == 0, 1, 2, ...فراخوانی میشود تا زمانی که این متدNoneرا برگرداند.اگر برای text فراخوانی شود که شامل نویسه نقطه (
'.') نباشد، آن را از نامهایی که در حال حاضر در__main__وbuiltinsتعریف شدهاند و نیز کلیدواژهها (همانطور که توسط ماژولkeywordتعریف شدهاند) تکمیل خواهد کرد.اگر برای یک نام نقطهدار فراخوانی شود، تلاش میکند هر چیزی را بدون عوارض جانبی آشکار (توابع ارزیابی نمیشوند، اما ممکن است فراخوانیهایی به
__getattr__()ایجاد شود) تا آخرین بخش ارزیابی کند و برای باقیمانده، تطابقها را از طریق تابعdir()بیابد. هر استثنایی که در حین ارزیابی عبارت پرتاب شود، گرفته و سرکوب میشود وNoneبرگردانده میشود.