اشیاء اسلایس¶
-
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 ذخیره کنید. شاخصهای خارج از کران به روشی سازگار با مدیریت اسلایسهای عادی برش داده میشوند. length نباید منفی باشد.
در صورت موفقیت 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.
اندیسهای شروع/پایان اسلایس را با فرض دنبالهای به طول مشخصشده تنظیم میکند. اندیسهای خارج از محدوده به شکلی سازگار با نحوهی برخورد با اسلایسهای معمولی محدود میشوند.
length نباید منفی باشد. step نباید صفر باشد و نباید کمتر از -PY_SSIZE_T_MAX باشد؛ این موضوع توسط PySlice_Unpack() تضمین شده است.
طول اسلایس را برمیگرداند. همیشه موفق است. کد پایتون را فراخوانی نمیکند.
اضافه شده در نسخهی 3.6.1.
©
حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به
تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا
اشکالی یافتید؟
ساخته شده با
Sphinx 9.1.0.