کتابخانه استاندارد پایتون فهرست بلندی است که کسی از اول تا آخر نمیخواندش، و برای همین شش ماژولی که بیشترین وابستگی را حذف میکنند تقریبا هیچوقت پیدا نمیشوند. هر شش تا همین حالا روی ماشین شما هستند.
argparse برای اسکریپتی که کس دیگری اجرا میکند. سه سطر تعریف، و سطر راهنما و بررسی نوع رایگان میآید:
ap.add_argument("--saghf", type=int, default=50)- با ورودی درست:
Namespace(pooshe='aksha', faghat_neshan=True, saghf=50) - با ورودی غلط:
morattab: error: argument --saghf: invalid int value: 'ziad'
یک قاعده که وقت میگیرد تا کشف شود: خط تیره در نام پرچم روی صفت خروجی به زیرخط تبدیل میشود، پس --faghat-neshan میشود faghat_neshan.
پنج ماژول دیگر، و کاری که هرکدام حذف میکنند
zoneinfo منطقه زمانی واقعی میدهد و نه یک عدد ساعت. برای ایران این تفاوت جدی است، چون اختلاف نیمساعتی است و هر کدی که ساعت را با جمع و تفریق عدد صحیح حساب کند دیر یا زود نیم ساعت اشتباه میشود. itertools حلقههایی را که میخواستید بنویسید حاضر دارد: groupby برای گروهبندی که پیش از آن باید مرتب کنید وگرنه یک گروه را دو بار میسازد، pairwise برای جفتهای پشت سر هم از پایتون 3.10، و batched برای تکه کردن که تکه آخر کوتاه را هم درست جواب میدهد.
secrets برای هر چیزی که یک غریبه میبیند، مثل توکن و لینک بازیابی رمز. ماژول random برای این کار غلط است چون خروجیاش از روی خروجیهای قبلی قابل پیشبینی است، و این یک نکته سبکی نیست. textwrap متن را روی مرز کلمه میشکند و نه وسط کلمه، و shutil فضای خالی دیسک را پیش از نوشتن میگوید بهجای اینکه بعد از شکست بفهمید.
چرا این فهرست در ایران وزن دیگری دارد
هر بستهای که نصب نمیکنید یک وابستگی به مخزن بیرونی کمتر است. برای تیمی که pip install کردنش همیشه از اولین بار جواب نمیدهد، کدی که فقط با کتابخانه استاندارد کار میکند روی هر ماشینی و در هر شرایطی بالا میآید. این نه یک اصل مهندسی جهانی است و نه سختگیری بیدلیل؛ یک واقعیت محلی است که انتخاب فنی را عوض میکند. پیش از افزودن هر وابستگی، یک بار در همین کتابخانه بگردید.
جایی که کار گیر میکند، جستوجو بهجای فهرست است
مستندات رسمی بر اساس دستهبندی موضوعی مرتب شده و نه بر اساس کاری که شما داشتید، و دقیقا به همین دلیل این ماژولها پیدا نمیشوند: کسی که دنبال «گروهبندی سطرها» است هرگز به فصل «توابع ایجاد کننده تکرارشونده» نمیرسد. کاری که واقعا جواب میدهد این است که یک بار فهرست ماژولها را از بالا تا پایین بخوانید و فقط نامها را نگاه کنید، بدون خواندن هیچ توضیحی. نیم ساعت طول میکشد و از آن به بعد میدانید که چیزی برای این کار وجود دارد، که تنها چیزی است که لازم است بدانید.
ابزار، و سالی که این حرف درست است
در سال ۲۰۲۶ هر شش ماژول بالا در پایتون 3.14 هستند و رایگان، و هیچکدام به شبکه نیازی ندارند. zoneinfo از پایتون 3.9 اضافه شد و جای بسته pytz را گرفت، که تا پیش از آن تنها راه بود و رابطش هم دامهای خودش را داشت؛ روی ویندوز داده منطقه زمانی جدا نصب میشود و روی سیستمهای شبهیونیکس از خود سیستمعامل میآید. itertools.batched تازهتر از بقیه است و از پایتون 3.12 در دسترس است.
پرسش بعدی این است که وقتی چیزی لازم شد که در این فهرست نیست، چطور نصب شود بیآنکه پروژههای دیگر را خراب کند، که نصب کتابخانه، و جدا نگه داشتن پروژهها از هم است. و اولین جایی که این ماژولها به کار میآیند معمولا یک اسکریپت کوچک است: فایلها، صفحهگستردهها و کارهای تکراری.