پروتکل عدد¶
-
int PyNumber_Check(PyObject *o)¶
- قسمتی از ABI پایدار.
اگر شیء o پروتکلهای عددی را فراهم کند،
1بازمیگرداند و در غیر این صورت نادرست. این تابع همیشه موفق میشود.تغییر یافته در نسخهی 3.8: اگر o یک عدد صحیح اندیس باشد،
1برمیگرداند.
-
PyObject *PyNumber_Add(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نتیجهی جمع o1 و o2 را برمیگرداند، یا در صورت شکست
NULLبرمیگرداند. این معادل عبارت پایتونیo1 + o2است.
-
PyObject *PyNumber_Subtract(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نتیجهی تفریق o2 از o1 را برمیگرداند، یا در صورت شکست
NULL. این معادل عبارت پایتونیo1 - o2است.
-
PyObject *PyNumber_Multiply(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نتیجهی ضرب o1 و o2 را برمیگرداند، یا در صورت شکست
NULL. این معادل عبارت پایتونیo1 * o2است.
-
PyObject *PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار از نسخهی 3.7.
نتیجهی ضرب ماتریسی روی o1 و o2 را برمیگرداند، یا در صورت شکست
NULL. این معادل عبارت پایتونیo1 @ o2است.اضافه شده در نسخهی 3.5.
-
PyObject *PyNumber_FloorDivide(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
کف تقسیم o1 بر o2 را برمیگرداند، یا در صورت شکست
NULL. این معادل عبارت پایتونیo1 // o2است.
-
PyObject *PyNumber_TrueDivide(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
تقریبی معقول از مقدار ریاضی o1 تقسیمشده بر o2 را برمیگرداند، یا در صورت شکست
NULLرا برمیگرداند. مقدار بازگشتی «تقریبی» است، زیرا اعداد ممیز شناور دودویی تقریبیاند؛ نمیتوان همهی اعداد حقیقی را در مبنای دو نمایش داد. این تابع میتواند هنگام دریافت دو عدد صحیح، یک مقدار ممیز شناور برگرداند. این معادل عبارت پایتونیo1 / o2است.
-
PyObject *PyNumber_Remainder(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
باقیماندهی تقسیم o1 بر o2 را برمیگرداند، یا در صورت شکست
NULL. این معادل عبارت پایتونیo1 % o2است.
-
PyObject *PyNumber_Divmod(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
تابع توکار
divmod()را ببینید. در صورت شکستNULLرا برمیگرداند. این معادل عبارت پایتونیdivmod(o1, o2)است.
-
PyObject *PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
به تابع توکار
pow()مراجعه کنید. در صورت شکست،NULLبرمیگرداند. این معادل عبارت پایتونیpow(o1, o2, o3)است که در آن o3 اختیاری است. اگر قرار است o3 نادیده گرفته شود، به جای آنPy_Noneرا ارسال کنید (ارسالNULLبرای o3 باعث دسترسی غیرمجاز به حافظه میشود).
-
PyObject *PyNumber_Negative(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نفی o را در صورت موفقیت، یا
NULLرا در صورت شکست برمیگرداند. این معادل عبارت پایتونی-oاست.
-
PyObject *PyNumber_Positive(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت o و در صورت شکست
NULLرا برمیگرداند. این معادل عبارت پایتونی+oاست.
-
PyObject *PyNumber_Absolute(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
قدر مطلق o را برمیگرداند، یا در صورت شکست
NULL. این معادل عبارت پایتونیabs(o)است.
-
PyObject *PyNumber_Invert(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نقیض بیتی o را در صورت موفقیت و
NULLرا در صورت شکست برمیگرداند. این معادل عبارت پایتونی~oاست.
-
PyObject *PyNumber_Lshift(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، نتیجهی شیفت به چپ o1 به اندازهی o2 را برمیگرداند، یا در صورت شکست
NULLرا برمیگرداند. این معادل عبارت پایتونیo1 << o2است.
-
PyObject *PyNumber_Rshift(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، نتیجهی شیفت به راست o1 به اندازهی o2 را برمیگرداند و در صورت شکست
NULL. این معادل عبارت پایتونo1 >> o2است.
-
PyObject *PyNumber_And(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، «وِ بیتی» o1 و o2 را و در صورت شکست
NULLرا برمیگرداند. این معادل عبارتo1 & o2در پایتون است.
-
PyObject *PyNumber_Xor(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، «یای انحصاری بیتی» o1 با o2 را برمیگرداند و در صورت شکست
NULLرا برمیگرداند. این معادل عبارت پایتونیo1 ^ o2است.
-
PyObject *PyNumber_Or(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، «یای بیتی» o1 و o2 را برمیگرداند و در صورت شکست
NULL. این معادل عبارت پایتونیo1 | o2است.
-
PyObject *PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
حاصل جمع o1 و o2 را برمیگرداند، یا در صورت شکست
NULL. عملیات زمانی بهصورت درجا (in-place) انجام میشود که o1 آن را پشتیبانی کند. این معادل دستور پایتونیo1 += o2است.
-
PyObject *PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نتیجهی تفریق o2 از o1 را برمیگرداند، یا در صورت شکست
NULL. این عملیات هنگامی که o1 از آن پشتیبانی کند، بهصورت درجا انجام میشود. این معادل دستورo1 -= o2در پایتون است.
-
PyObject *PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نتیجهی ضرب o1 و o2 را برمیگرداند، یا در صورت شکست
NULL. این عملیات زمانی که o1 از آن پشتیبانی کند، بهصورت درجا انجام میشود. این معادل دستورo1 *= o2در پایتون است.
-
PyObject *PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار از نسخهی 3.7.
نتیجهی ضرب ماتریسی روی o1 و o2 را برمیگرداند، یا در صورت شکست
NULL. این عملیات زمانی درجا انجام میشود که o1 از آن پشتیبانی کند. این معادل دستور پایتونیo1 @= o2است.اضافه شده در نسخهی 3.5.
-
PyObject *PyNumber_InPlaceFloorDivide(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
کف ریاضی تقسیم o1 بر o2 را برمیگرداند، یا در صورت شکست
NULL. این عملیات زمانی که o1 از آن پشتیبانی کند، بهصورت درجا انجام میشود. این معادل دستور پایتونیo1 //= o2است.
-
PyObject *PyNumber_InPlaceTrueDivide(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
تقریب معقولی از مقدار ریاضیِ o1 تقسیم بر o2 را برمیگرداند، یا در صورت شکست
NULL. مقدار بازگشتی «تقریبی» است زیرا اعداد ممیز شناور دودویی تقریبیاند؛ نمیتوان تمامی اعداد حقیقی را در مبنای دو نمایش داد. این تابع میتواند هنگامی که دو عدد صحیح به آن داده شود، مقداری ممیز شناور برگرداند. این عملیات در صورتی که o1 از آن پشتیبانی کند، درجا انجام میشود. این معادل دستور پایتونیo1 /= o2است.
-
PyObject *PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
باقیماندهی تقسیم o1 بر o2 را برمیگرداند، یا در صورت شکست
NULL. این عملیات زمانی که o1 از آن پشتیبانی کند، درجا انجام میشود. این معادل دستور پایتونیo1 %= o2است.
-
PyObject *PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
تابع توکار
pow()را ببینید. در صورت شکست،NULLرا برمیگرداند. این عملیات زمانی که o1 از آن پشتیبانی کند، درجا انجام میشود. این معادل دستور پایتونیo1 **= o2است وقتی که o3 برابرPy_Noneباشد، یا در غیر این صورت، گونهی درجایpow(o1, o2, o3)است. اگر قرار باشد o3 نادیده گرفته شود،Py_Noneرا بهجای آن پاس دهید (پاس دادنNULLبرای o3 باعث دسترسی غیرمجاز به حافظه خواهد شد).
-
PyObject *PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، نتیجهی شیفت به چپ o1 به اندازهی o2 و در صورت شکست
NULLرا برمیگرداند. این عملیات در صورتی که o1 از آن پشتیبانی کند، بهصورت درجا (in-place) انجام میشود. این معادل دستورo1 <<= o2در پایتون است.
-
PyObject *PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
نتیجهی شیفت به راست o1 به میزان o2 را در صورت موفقیت برمیگرداند و در صورت شکست
NULLرا. این عملیات زمانی که o1 از آن پشتیبانی کند، درجا انجام میشود. این معادل دستور پایتونo1 >>= o2است.
-
PyObject *PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، «و بیتی» o1 و o2 را برمیگرداند و در صورت شکست
NULLبرمیگرداند. این عملیات زمانی که o1 از آن پشتیبانی کند، بهصورت درجا انجام میشود. این معادل دستور پایتونیo1 &= o2است.
-
PyObject *PyNumber_InPlaceXor(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، «یای انحصاری بیتی» o1 با o2 را برمیگرداند و در صورت شکست
NULL. این عملیات زمانی که o1 از آن پشتیبانی کند، درجا انجام میشود. این معادل دستورo1 ^= o2در پایتون است.
-
PyObject *PyNumber_InPlaceOr(PyObject *o1, PyObject *o2)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، «یای بیتی» o1 و o2 و در صورت شکست
NULLرا برمیگرداند. این عملیات هنگامی که o1 از آن پشتیبانی کند، بهصورت درجا انجام میشود. این معادل دستور پایتونیo1 |= o2است.
-
PyObject *PyNumber_Long(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، o تبدیلشده به یک شیء عدد صحیح را بازمیگرداند، یا در صورت شکست
NULLرا برمیگرداند. این معادل عبارت پایتونیint(o)است.
-
PyObject *PyNumber_Float(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، o تبدیلشده به یک شیء اعشاری و در صورت شکست
NULLرا برمیگرداند. این معادل عبارت پایتونیfloat(o)است.
-
PyObject *PyNumber_Index(PyObject *o)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
در صورت موفقیت، o تبدیلشده به یک عدد صحیح پایتون را برمیگرداند و در صورت شکست،
NULLرا همراه با ایجاد استثنایTypeErrorبرمیگرداند.تغییر یافته در نسخهی 3.10: نتیجه همیشه دقیقاً از نوع
intاست. پیشتر، نتیجه میتوانست نمونهای از یک زیرکلاس ازintباشد.
-
PyObject *PyNumber_ToBase(PyObject *n, int base)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
عدد صحیح n تبدیلشده به مبنای base را بهصورت رشته برمیگرداند. آرگومان base باید یکی از مقادیر ۲، ۸، ۱۰ یا ۱۶ باشد. برای مبنای ۲، ۸ یا ۱۶، رشتهی برگرداندهشده بهترتیب با نشانگر مبنای
'0b'،'0o'یا'0x'پیشوند میگیرد. اگر n یک int پایتون نباشد، ابتدا باPyNumber_Index()تبدیل میشود.
-
Py_ssize_t PyNumber_AsSsize_t(PyObject *o, PyObject *exc)¶
- قسمتی از ABI پایدار.
در صورتی که o بتواند به عنوان یک عدد صحیح تفسیر شود، o را به یک مقدار
Py_ssize_tتبدیلشده برمیگرداند. اگر فراخوانی شکست بخورد، یک استثنا مطرح میشود و-1برگردانده میشود.اگر o بتواند به یک int پایتون تبدیل شود، اما تلاش برای تبدیل به مقدار
Py_ssize_tموجب ایجادOverflowErrorشود، آنگاه آرگومان exc نوع استثنایی است که ایجاد خواهد شد (معمولاًIndexErrorیاOverflowError). اگر exc برابرNULLباشد، استثنا پاک میشود و مقدار برای عدد صحیح منفی بهPY_SSIZE_T_MINو برای عدد صحیح مثبت بهPY_SSIZE_T_MAXبریده میشود.
-
int PyIndex_Check(PyObject *o)¶
- قسمتی از ABI پایدار از نسخهی 3.8.
اگر o یک عدد صحیح اندیس باشد (جایگاه
nb_indexدر ساختارtp_as_numberآن پر شده باشد)،1و در غیر این صورت0برمیگرداند. این تابع همیشه موفق میشود.