Đối tượng tuple

type PyTupleObject

Kiểu con này của PyObject đại diện cho một đối tượng bộ dữ liệu Python.

PyTypeObject PyTuple_Type
Một phần của ABI ổn định.

Phiên bản PyTypeObject này đại diện cho kiểu bộ dữ liệu Python; nó là đối tượng tương tự như tuple trong 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 NULL vớ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 NULL vớ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ới Py_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ề -1 vớ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ề NULL và đặ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ặc PySequence_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 lowhigh hoặc NULL vớ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ề 0 khi thành công. Nếu pos nằm ngoài giới hạn, hãy trả về -1 và đặ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ề 0 khi thành công. Mã máy khách không bao giờ được cho rằng giá trị kết quả của *p sẽ 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ế, *p ban đầu sẽ bị hủy. Nếu thất bại, trả về -1 và đặt *p thành NULL, đồng thời tăng MemoryError hoặc SystemError.

Đố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ề NULL vớ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ề 0 nếu thành công và -1 vớ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 NULL cần bỏ qua.

PyStructSequence_Field *fields

Con trỏ tới mảng kết thúc bằng NULL vớ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).

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 fields của PyStructSequence_Desc xá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ành PyStructSequence_UnnamedField để không có tên.

const char *doc

Trường docstring hoặc NULL để bỏ qua.

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ề NULL vớ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().