سطح مقدماتی (Beginner Level)
در برنامهنویسی پایتون، اغلب نیاز داریم بررسی کنیم که آیا در یک لیست یا مجموعه داده، "همه" مقادیر صحیح هستند یا "حداقل یکی" از آنها صحیح است. به جای نوشتن حلقههای for طولانی، پایتون دو تابع داخلی (Built-in) بسیار کاربردی به نامهای any() و all() در اختیار ما قرار میدهد.
تابع all()
این تابع تنها زمانی مقدار True برمیگرداند که تمام اعضای موجود در ایتربل (مثل لیست یا تاپل) صحیح (True) باشند. اگر حتی یک مورد False باشد، خروجی False خواهد بود.
این تابع مشابه عملگر منطقی AND عمل میکند اما روی مجموعهای از دادهها.
تابع any()
این تابع زمانی مقدار True برمیگرداند که حداقل یکی از اعضای ایتربل صحیح (True) باشد. تنها زمانی False میدهد که تمام اعضا False باشند.
این تابع مشابه عملگر منطقی OR عمل میکند.
# ساختار کلی (Pseudo-code)
# اگر لیست خالی باشد، رفتار آنها متفاوت است که در سطح پیشرفته بررسی میکنیم
result_all = all(iterable)
result_any = any(iterable)
سطح پیشرفته (Professional Level)
در سطح حرفهای، استفاده از any و all تنها برای تمیز کردن کد نیست، بلکه بحث Performance (کارایی) و Short-circuiting (قطع کوتاه) و رفتار با دادههای خالی مطرح میشود.
مفهوم Short-Circuiting (قطع کوتاه)
هر دو تابع any و all به صورت Lazy عمل میکنند. یعنی به محض اینکه نتیجه قطعی شود، پردازش را متوقف میکنند و ادامه لیست را بررسی نمیکنند.
all(): به محض دیدن اولینFalse، متوقف شده وFalseبرمیگرداند.any(): به محض دیدن اولینTrue، متوقف شده وTrueبرمیگرداند.
این ویژگی زمانی که با توابع سنگین یا دیتابیسها کار میکنید، بسیار حیاتی است.
بهینهسازی حافظه با Generator Expression
یک اشتباه رایج بین برنامهنویسان متوسط، استفاده از List Comprehension درون all یا any است. این کار باعث میشود ابتدا کل لیست در حافظه ساخته شود و سپس بررسی شود، که ویژگی Short-circuiting را خنثی میکند (در مرحله ساخت لیست).
روش غلط (Memory Inefficient):
all([x > 0 for x in huge_list]) # براکت [] کل لیست را میسازد
روش صحیح (Memory Efficient):
all(x > 0 for x in huge_list) # بدون براکت، یک Generator است
رفتار با ایتربلهای خالی (Vacuous Truth)
یک نکته بسیار مهم در منطق ریاضی و پایتون، خروجی این توابع روی لیست خالی [] است:
all([])برابر است باTrue. (چون هیچ عضوی وجود ندارد که شرط را نقض کند - حقیقتی توخالی).any([])برابر است باFalse. (چون هیچ عضوی وجود ندارد که True باشد).

Truthiness مقادیر غیر بولین
این توابع روی هر نوع دادهای کار میکنند و از قانون Truthy/Falsy پایتون پیروی میکنند.
- اعداد غیر صفر، رشتههای غیر خالی، لیستهای پر ->
True - عدد ۰،
None، رشته خالی، لیست خالی ->False