Đối tượng tuple¶
-
PyTypeObject PyTuple_Type¶
- Một phần của ABI ổn định.
Phiên bản
PyTypeObjectnày đại diện cho kiểu bộ dữ liệu Python; nó là đối tượng tương tự nhưtupletrong lớp Python.
-
int PyTuple_Check(PyObject *p)¶
Trả về true nếu p là một đối tượng bộ dữ liệu hoặc một phiên bản của kiểu con của kiểu bộ dữ liệu. Chức năng này luôn thành công.
-
int PyTuple_CheckExact(PyObject *p)¶
Trả về true nếu p là một đối tượng bộ dữ liệu, nhưng không phải là phiên bản của kiểu con của kiểu bộ dữ liệu. Chức năng này luôn thành công.
-
PyObject *PyTuple_New(Py_ssize_t len)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.
Trả về một đối tượng tuple mới có kích thước len hoặc
NULLvới ngoại lệ được đặt là lỗi.
-
PyObject *PyTuple_Pack(Py_ssize_t n, ...)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.
Trả về một đối tượng bộ dữ liệu mới có kích thước n hoặc
NULLvới ngoại lệ được đặt là lỗi. Các giá trị bộ dữ liệu được khởi tạo cho các đối số n C tiếp theo trỏ đến các đối tượng Python.PyTuple_Pack(2, a, b)tương đương vớiPy_BuildValue("(OO)", a, b).
-
Py_ssize_t PyTuple_Size(PyObject *p)¶
- Một phần của ABI ổn định.
Lấy một con trỏ tới một đối tượng bộ dữ liệu và trả về kích thước của bộ dữ liệu đó. Nếu có lỗi, hãy trả về
-1với một bộ ngoại lệ.
-
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)¶
Giống như
PyTuple_Size()nhưng không có tính năng kiểm tra lỗi.
-
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶
- Giá trị trả về: Tham chiếu mượn. Một phần của ABI ổn định.
Trả về đối tượng ở vị trí pos trong bộ dữ liệu được trỏ bởi p. Nếu pos âm hoặc nằm ngoài giới hạn, hãy trả về
NULLvà đặt ngoại lệIndexError.Tham chiếu trả về được mượn từ bộ p (nghĩa là: nó chỉ hợp lệ miễn là bạn giữ tham chiếu đến p). Để có được strong reference, hãy sử dụng
Py_NewRef(PyTuple_GetItem(...))hoặcPySequence_GetItem().
-
PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Giá trị trả về: Tham chiếu mượn.
Giống như
PyTuple_GetItem()nhưng không kiểm tra các đối số của nó.
-
PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.
Trả về lát của bộ dữ liệu được trỏ bởi p giữa low và high hoặc
NULLvới một ngoại lệ được đặt là lỗi.Điều này tương đương với biểu thức Python
p[low:high]. Lập chỉ mục từ cuối bộ dữ liệu không được hỗ trợ.
-
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Một phần của ABI ổn định.
Chèn một tham chiếu đến đối tượng o tại vị trí pos của bộ được trỏ bởi p. Trả về
0khi thành công. Nếu pos nằm ngoài giới hạn, hãy trả về-1và đặt ngoại lệIndexError.Ghi chú
Hàm này "đánh cắp" một tham chiếu đến o và loại bỏ một tham chiếu đến một mục đã có trong bộ dữ liệu ở vị trí bị ảnh hưởng.
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶
Giống như
PyTuple_SetItem(), nhưng không kiểm tra lỗi và only có nên được sử dụng để điền vào các bộ dữ liệu hoàn toàn mới hay không.Việc kiểm tra giới hạn được thực hiện dưới dạng xác nhận nếu Python được tích hợp trong debug mode hoặc
with assertions.Ghi chú
Hàm này "đánh cắp" tham chiếu đến o, và không giống như
PyTuple_SetItem(), not loại bỏ tham chiếu đến bất kỳ mục nào đang được thay thế; mọi tham chiếu trong bộ dữ liệu ở vị trí pos sẽ bị rò rỉ.Cảnh báo
Macro này nên sử dụng only trên các bộ dữ liệu mới được tạo. Việc sử dụng macro này trên một bộ dữ liệu đã được sử dụng (hay nói cách khác là có số lần đếm lại > 1) có thể dẫn đến hành vi không xác định.
-
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶
Có thể được sử dụng để thay đổi kích thước một tuple. newsize sẽ là độ dài mới của bộ dữ liệu. Bởi vì các bộ dữ liệu supposed là bất biến nên điều này chỉ nên được sử dụng nếu chỉ có một tham chiếu đến đối tượng. not có nên sử dụng điều này nếu bộ dữ liệu có thể đã được biết đến ở một số phần khác của mã. Tuple sẽ luôn phát triển hoặc co lại ở cuối. Hãy coi điều này giống như việc phá hủy bộ dữ liệu cũ và tạo một bộ dữ liệu mới, chỉ có điều là hiệu quả hơn. Trả về
0khi thành công. Mã máy khách không bao giờ được cho rằng giá trị kết quả của*psẽ giống như trước khi gọi hàm này. Nếu đối tượng được tham chiếu bởi*pđược thay thế,*pban đầu sẽ bị hủy. Nếu thất bại, trả về-1và đặt*pthànhNULL, đồng thời tăngMemoryErrorhoặcSystemError.
Đối tượng chuỗi cấu trúc¶
Các đối tượng chuỗi cấu trúc tương đương với C của các đối tượng namedtuple(), tức là một chuỗi có các mục cũng có thể được truy cập thông qua các thuộc tính. Để tạo một chuỗi cấu trúc, trước tiên bạn phải tạo một loại chuỗi cấu trúc cụ thể.
-
PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.
Tạo loại chuỗi cấu trúc mới từ dữ liệu trong desc, được mô tả bên dưới. Các phiên bản của loại kết quả có thể được tạo bằng
PyStructSequence_New().Trả về
NULLvới ngoại lệ được đặt là lỗi.
-
void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)¶
Khởi tạo kiểu chuỗi cấu trúc type từ desc tại chỗ.
-
int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)¶
Giống như
PyStructSequence_InitType(), nhưng trả về0nếu thành công và-1với ngoại lệ được đặt nếu thất bại.Added in version 3.4.
-
type PyStructSequence_Desc¶
- Một phần của ABI ổn định (bao gồm tất cả các thành viên).
Chứa thông tin meta của loại chuỗi cấu trúc cần tạo.
-
const char *name¶
Tên đầy đủ của loại; được mã hóa UTF-8 kết thúc bằng null. Tên phải chứa tên mô-đun.
-
const char *doc¶
Con trỏ tới chuỗi tài liệu cho loại hoặc
NULLcần bỏ qua.
-
PyStructSequence_Field *fields¶
Con trỏ tới mảng kết thúc bằng
NULLvới tên trường thuộc loại mới.
-
int n_in_sequence¶
Số trường hiển thị phía Python (nếu được sử dụng dưới dạng bộ dữ liệu).
-
const char *name¶
-
type PyStructSequence_Field¶
- Một phần của ABI ổn định (bao gồm tất cả các thành viên).
Mô tả một trường của chuỗi cấu trúc. Vì chuỗi cấu trúc được mô hình hóa dưới dạng bộ dữ liệu nên tất cả các trường được nhập là PyObject*. Chỉ mục trong mảng
fieldscủaPyStructSequence_Descxác định trường nào của chuỗi cấu trúc được mô tả.-
const char *name¶
Tên cho trường hoặc
NULLđể kết thúc danh sách các trường được đặt tên, đặt thànhPyStructSequence_UnnamedFieldđể không có tên.
-
const char *doc¶
Trường docstring hoặc
NULLđể bỏ qua.
-
const char *name¶
-
const char *const PyStructSequence_UnnamedField¶
- Một phần của ABI ổn định kể từ phiên bản 3.11.
Giá trị đặc biệt cho tên trường để không đặt tên.
Thay đổi trong phiên bản 3.9: Loại đã được thay đổi từ
char *.
-
PyObject *PyStructSequence_New(PyTypeObject *type)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.
Tạo một phiên bản của type, phiên bản này phải được tạo bằng
PyStructSequence_NewType().Trả về
NULLvới ngoại lệ được đặt là lỗi.
-
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶
- Giá trị trả về: Tham chiếu mượn. Một phần của ABI ổn định.
Trả về đối tượng tại vị trí pos trong chuỗi cấu trúc được trỏ bởi p.
Việc kiểm tra giới hạn được thực hiện dưới dạng xác nhận nếu Python được tích hợp trong debug mode hoặc
with assertions.
-
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Giá trị trả về: Tham chiếu mượn.
Bí danh cho
PyStructSequence_GetItem().Thay đổi trong phiên bản 3.13: Hiện được triển khai dưới dạng bí danh cho
PyStructSequence_GetItem().
-
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Một phần của ABI ổn định.
Đặt trường ở chỉ mục pos của chuỗi cấu trúc p thành giá trị o. Giống như
PyTuple_SET_ITEM(), điều này chỉ nên được sử dụng để điền vào các phiên bản hoàn toàn mới.Việc kiểm tra giới hạn được thực hiện dưới dạng xác nhận nếu Python được tích hợp trong debug mode hoặc
with assertions.Ghi chú
Hàm này "đánh cắp" một tham chiếu đến o.
-
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶
Bí danh cho
PyStructSequence_SetItem().Thay đổi trong phiên bản 3.13: Hiện được triển khai dưới dạng bí danh cho
PyStructSequence_SetItem().