خانه / آموزش‌ها / آموزش جامع متدهای اعداد صحیح (int) در پایتون

آموزش جامع متدهای اعداد صحیح (int) در پایتون

🐍 HomeOfPython
|
📅 1404/10/16

سطح مقدماتی (Beginner Level)

در پایتون، اعداد صحیح (Integers) تنها مقادیر خام نیستند؛ آن‌ها شیء (Object) هستند. این یعنی حتی یک عدد ساده مثل 10 دارای ویژگی‌ها و متدهایی است که می‌توانیم آن‌ها را صدا بزنیم. در حالی که اعداد صحیح متدهای زیادی (مانند رشته‌ها) ندارند، اما متدهای موجود برای محاسبات باینری و تبدیل داده‌ها بسیار حیاتی هستند.

در این بخش با متدهای پایه‌ای که برای درک ساختار اعداد نیاز دارید، آشنا می‌شویم.

۱. متد bit_length()

این متد تعداد بیت‌های مورد نیاز برای نمایش یک عدد در مبنای دو (Binary) را برمی‌گرداند (بدون در نظر گرفتن بیت علامت و صفرهای سمت چپ).

کاربرد

زمانی که می‌خواهید بدانید یک عدد چه مقدار فضا در حافظه (به صورت بیت‌های خالص) اشغال می‌کند، از این متد استفاده می‌شود.

Python
Python

۲. متد as_integer_ratio()

این متد یک تاپل شامل دو عدد برمی‌گرداند: صورت و مخرج. از آنجا که اعداد int همیشه گویا و صحیح هستند، مخرج همیشه ۱ خواهد بود. این متد بیشتر برای هماهنگی (Compatibility) با نوع داده float وجود دارد.

Python
python
# مثال ۴: قطعه کد مقایسه (Static - Snippet)
# این متد در فلوت‌ها کاربردی‌تر است اما در int اینگونه تعریف می‌شود:
def check_ratio(n):
    return n.as_integer_ratio() == (n, 1) # همیشه True برای int

سطح پیشرفته (Professional Level)

در سطح حرفه‌ای، متدهای int ابزارهای قدرتمندی برای کار با داده‌های سطح پایین (Low-level)، شبکه (Networking)، و رمزنگاری (Cryptography) هستند. در اینجا روی دستکاری بایت‌ها و بهینه‌سازی تمرکز می‌کنیم.

۱. شمارش بیت‌های روشن با bit_count()

این متد (که در پایتون ۳.۱۰ اضافه شد) تعداد بیت‌هایی که مقدارشان 1 است را می‌شمارد. به این عملیات در علوم کامپیوتر "Population Count" یا "Popcount" می‌گویند.

Python
Python

۲. تبدیل به بایت با to_bytes()

این یکی از مهم‌ترین متدها برای برنامه نویسی شبکه و ذخیره‌سازی فایل است. این متد عدد را به آرایه‌ای از بایت‌ها (bytes) تبدیل می‌کند.

پارامترها:

  1. length: تعداد بایت‌های خروجی.
  2. byteorder: ترتیب بایت‌ها ('big' یا 'little').
  3. signed: (اختیاری) آیا عدد علامت‌دار است یا خیر.
python
# ساختار کلی (Static - Definition)
int.to_bytes(length, byteorder, *, signed=False)
Python

۳. تبدیل بایت به عدد با from_bytes()

این متد کلاس (Class Method) است و برعکس عمل بالا را انجام می‌دهد: رشته‌ای از بایت‌ها را گرفته و به عدد صحیح تبدیل می‌کند.

Python

۴. نکات فنی و مدیریت حافظه

اعداد صحیح در پایتون "Arbitrary Precision" هستند، یعنی محدودیت ۶۴ بیتی ندارند و تا جایی که رم اجازه دهد بزرگ می‌شوند. اما پایتون برای اعداد کوچک (بین -5 تا 256) از تکنیک Interning (کش کردن) استفاده می‌کند.

Python
python
# مثال ۱۰: مدیریت خطا در تبدیل بایت (Static - Overflow)
def safe_to_bytes(number, size):
    try:
        return number.to_bytes(size, byteorder='big')
    except OverflowError:
        return "Error: Number too large for this byte size"