اشیاء اسلایس

PyTypeObject PySlice_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیاء اسلایس. این همان slice در لایه‌ی پایتون است.

int PySlice_Check(PyObject *ob)

اگر ob یک شیء اسلایس باشد، مقدار درست را برمی‌گرداند؛ ob نباید NULL باشد. این تابع همیشه با موفقیت انجام می‌شود.

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء اسلایس جدید با مقادیر داده‌شده برمی‌گرداند. پارامترهای start، stop و step به‌عنوان مقادیر ویژگی‌های هم‌نام شیء اسلایس استفاده می‌شوند. هر یک از مقادیر می‌تواند NULL باشد، که در این صورت None برای ویژگی مربوطه استفاده خواهد شد.

اگر نتوان شیء جدید را تخصیص داد، NULL به‌همراه یک استثنا تنظیم‌شده بازگردانید.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
قسمتی از ABI پایدار.

اندیس‌های شروع، توقف و گام را از شیء اسلایس slice، با فرض دنباله‌ای به طول length، بازیابی می‌کند. اندیس‌های بزرگ‌تر از length را به‌عنوان خطا در نظر می‌گیرد.

در صورت موفقیت 0 و در صورت خطا -1 را بدون تنظیم استثنا برمی‌گرداند (مگر آنکه یکی از اندیس‌ها None نباشد و نتوان آن را به عدد صحیح تبدیل کرد، که در این حالت -1 همراه با استثنای تنظیم‌شده برگردانده می‌شود).

احتمالاً نمی‌خواهید از این تابع استفاده کنید.

تغییر یافته در نسخه‌ی 3.2: نوع پارامتر slice قبلاً PySliceObject* بود.

int PySlice_GetIndicesEx(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
قسمتی از ABI پایدار.

جایگزین قابل استفاده برای PySlice_GetIndices(). اندیس‌های شروع، توقف و گام را از شیء اسلایس slice با فرض دنباله‌ای به طول length بازیابی می‌کند و طول اسلایس را در slicelength ذخیره می‌کند. اندیس‌های خارج از محدوده به شکلی سازگار با نحوه‌ی برخورد با اسلایس‌های معمولی محدود می‌شوند.

در صورت موفقیت 0 و در صورت خطا -1 به همراه استثنای تنظیم‌شده برمی‌گرداند.

توجه

این تابع برای دنباله‌های با اندازه‌ی قابل تغییر، ایمن در نظر گرفته نمی‌شود. فراخوانی آن باید با ترکیبی از PySlice_Unpack() و PySlice_AdjustIndices() جایگزین شود که در آن

if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
    // return error
}

جایگزین می‌شود با

if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
    // return error
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

تغییر یافته در نسخه‌ی 3.2: نوع پارامتر slice قبلاً PySliceObject* بود.

تغییر یافته در نسخه‌ی 3.6.1: اگر Py_LIMITED_API تنظیم نشده باشد یا روی مقداری بین 0x03050400 و 0x03060000 (شامل نمی‌شود) یا 0x03060100 یا بالاتر تنظیم شده باشد، PySlice_GetIndicesEx() به‌صورت یک ماکرو با استفاده از PySlice_Unpack() و PySlice_AdjustIndices() پیاده‌سازی شده است. آرگومان‌های start، stop و step بیش از یک بار ارزیابی می‌شوند.

منسوخ شده از نسخه‌ی 3.6.1: اگر Py_LIMITED_API به مقداری کمتر از 0x03050400 یا به مقداری بین 0x03060000 و 0x03060100 (شامل نمی‌شود) تنظیم‌شده باشد، PySlice_GetIndicesEx() تابعی منسوخ است.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
قسمتی از ABI پایدار از نسخه‌ی 3.7.

اعضای داده‌ی آغاز، پایان و گام را از یک شیء اسلایس به‌صورت اعداد صحیح C استخراج می‌کند. مقادیر بزرگ‌تر از PY_SSIZE_T_MAX را بی‌صدا به PY_SSIZE_T_MAX کاهش می‌دهد، مقادیر کمتر از PY_SSIZE_T_MIN برای آغاز و پایان را بی‌صدا به PY_SSIZE_T_MIN افزایش می‌دهد و مقادیر کمتر از -PY_SSIZE_T_MAX برای گام را بی‌صدا به -PY_SSIZE_T_MAX افزایش می‌دهد.

در صورت خطا -1 به همراه استثنای تنظیم‌شده و در صورت موفقیت 0 برمی‌گرداند.

اضافه شده در نسخه‌ی 3.6.1.

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
قسمتی از ABI پایدار از نسخه‌ی 3.7.

اندیس‌های شروع/پایان اسلایس را با فرض دنباله‌ای به طول مشخص‌شده تنظیم می‌کند. اندیس‌های خارج از محدوده به شکلی سازگار با نحوه‌ی برخورد با اسلایس‌های معمولی محدود می‌شوند.

طول اسلایس را برمی‌گرداند. همیشه موفق است. کد پایتون را فراخوانی نمی‌کند.

اضافه شده در نسخه‌ی 3.6.1.

شیء Ellipsis

PyTypeObject PyEllipsis_Type
قسمتی از ABI پایدار.

نوع شیء Ellipsis پایتون. همانند types.EllipsisType در لایه‌ی پایتون است.

PyObject *Py_Ellipsis

شیء Ellipsis پایتون. این شیء هیچ متدی ندارد. مانند Py_None، این یک شیء تک‌نمونه‌ی نامیرا است.

تغییر یافته در نسخه‌ی 3.12: Py_Ellipsis نامیرا است.