Lấy dữ liệu từ args python

Các hàm này hữu ích khi tạo các hàm và phương thức mở rộng của riêng bạn. Thông tin bổ sung và các ví dụ có sẵn trong

Ba hàm đầu tiên trong số các hàm này được mô tả, , và , tất cả đều sử dụng các chuỗi định dạng được sử dụng để báo cho hàm về các đối số dự kiến. Các chuỗi định dạng sử dụng cùng một cú pháp cho từng chức năng này

Phân tích đối số

Một chuỗi định dạng bao gồm 0 hoặc nhiều “đơn vị định dạng. ” Một đơn vị định dạng mô tả một đối tượng Python; . Với một vài trường hợp ngoại lệ, đơn vị định dạng không phải là chuỗi được đặt trong ngoặc đơn thường tương ứng với một đối số địa chỉ cho các hàm này. Trong mô tả sau đây, hình thức được trích dẫn là đơn vị định dạng;

Chuỗi và bộ đệm

Các định dạng này cho phép truy cập một đối tượng dưới dạng một đoạn bộ nhớ liền kề. Bạn không phải cung cấp bộ nhớ thô cho vùng unicode hoặc byte được trả về

Trừ khi có quy định khác, bộ đệm không bị kết thúc NULL

Có ba cách chuỗi và bộ đệm có thể được chuyển đổi thành C

  • Các định dạng như

    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    27 và
    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    28 điền vào cấu trúc. Điều này khóa bộ đệm bên dưới để người gọi sau đó có thể sử dụng bộ đệm ngay cả bên trong một khối mà không có nguy cơ dữ liệu có thể thay đổi bị thay đổi kích thước hoặc bị phá hủy. Do đó, bạn phải gọi sau khi xử lý xong dữ liệu [hoặc trong bất kỳ trường hợp hủy bỏ sớm nào]

  • Các định dạng

    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    1,
    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    2,
    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    3 và
    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    4 phân bổ bộ đệm kết quả. Bạn phải gọi sau khi xử lý xong dữ liệu [hoặc trong bất kỳ trường hợp hủy bỏ sớm nào]

  • Các định dạng khác lấy a hoặc chỉ đọc , chẳng hạn như và cung cấp con trỏ

    static PyObject *
    weakref_ref[PyObject *self, PyObject *args]
    {
        PyObject *object;
        PyObject *callback = NULL;
        PyObject *result = NULL;
    
        if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
            result = PyWeakref_NewRef[object, callback];
        }
        return result;
    }
    
    8 tới bộ đệm của nó. Trong trường hợp này, bộ đệm được “mượn”. nó được quản lý bởi đối tượng Python tương ứng và chia sẻ thời gian tồn tại của đối tượng này. Bạn sẽ không phải tự giải phóng bất kỳ bộ nhớ nào

    Để đảm bảo rằng bộ đệm bên dưới có thể được mượn một cách an toàn, trường của đối tượng phải là

    PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
    
    0. Điều này không cho phép các đối tượng có thể thay đổi phổ biến như , nhưng cũng có một số đối tượng chỉ đọc như của

    Bên cạnh yêu cầu

    PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
    
    4 này, không có kiểm tra nào để xác minh xem đối tượng đầu vào có bất biến hay không [e. g. liệu nó có tôn trọng yêu cầu đối với bộ đệm có thể ghi hay liệu một luồng khác có thể thay đổi dữ liệu hay không]

Ghi chú

Đối với tất cả các biến thể của định dạng

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
5 [
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6,
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
7, v.v. ], macro
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
8 phải được xác định trước khi bao gồm
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
9. Trên Python 3. 9 trở lên, loại đối số độ dài là nếu macro
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
8 được xác định hoặc ngược lại là int

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292 [] [const char *]

Chuyển đổi đối tượng Unicode thành con trỏ C thành chuỗi ký tự. Một con trỏ tới một chuỗi hiện có được lưu trữ trong biến con trỏ ký tự có địa chỉ mà bạn chuyển vào. Chuỗi C bị kết thúc NULL. Chuỗi Python không được chứa các điểm mã null được nhúng; . Các đối tượng Unicode được chuyển đổi thành chuỗi C bằng cách sử dụng mã hóa

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295. Nếu chuyển đổi này không thành công, a được nâng lên

Ghi chú

Định dạng này không chấp nhận. Nếu bạn muốn chấp nhận đường dẫn hệ thống tệp và chuyển đổi chúng thành chuỗi ký tự C, tốt hơn là sử dụng định dạng

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
297 với công cụ chuyển đổi

Đã thay đổi trong phiên bản 3. 5. Trước đây, đã được nêu ra khi gặp phải các điểm mã null được nhúng trong chuỗi Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
28 [ hoặc ] [Py_buffer]

Định dạng này chấp nhận các đối tượng Unicode cũng như các đối tượng dạng byte. Nó điền vào một cấu trúc được cung cấp bởi người gọi. Trong trường hợp này, chuỗi C kết quả có thể chứa các byte NUL được nhúng. Các đối tượng Unicode được chuyển đổi thành chuỗi C bằng cách sử dụng mã hóa

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6 [, chỉ đọc ] [const char *, ]

Giống như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
28, ngoại trừ việc nó cung cấp một. Kết quả được lưu vào hai biến C, biến đầu tiên là con trỏ tới chuỗi C, biến thứ hai có độ dài. Chuỗi có thể chứa các byte rỗng được nhúng. Các đối tượng Unicode được chuyển đổi thành chuỗi C bằng cách sử dụng mã hóa
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
369 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *]

Giống như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292, nhưng đối tượng Python cũng có thể là
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371, trong trường hợp đó, con trỏ C được đặt thành
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
375 [hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [Py_buffer]

Giống như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
28, nhưng đối tượng Python cũng có thể là
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371, trong trường hợp đó, thành viên
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
270 của cấu trúc được đặt thành
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
273 [, chỉ đọc hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *, ]

Giống như

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6, nhưng đối tượng Python cũng có thể là
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371, trong trường hợp đó, con trỏ C được đặt thành
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
280 [chỉ đọc ] [const char *]

Định dạng này chuyển đổi một đối tượng giống byte thành con trỏ C thành chuỗi ký tự; . Bộ đệm byte không được chứa các byte rỗng được nhúng;

Đã thay đổi trong phiên bản 3. 5. Trước đây, đã được nâng lên khi bắt gặp các byte null được nhúng trong bộ đệm byte.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
27 [] [Py_buffer]

Biến thể này trên

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
28 không chấp nhận các đối tượng Unicode, chỉ chấp nhận các đối tượng dạng byte. Đây là cách được đề xuất để chấp nhận dữ liệu nhị phân

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
7 [chỉ đọc ] [const char *, ]

Biến thể này trên

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6 không chấp nhận các đối tượng Unicode, chỉ chấp nhận các đối tượng dạng byte

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
288 [] [PyBytesObject *]

Yêu cầu đối tượng Python là một đối tượng mà không cần thực hiện bất kỳ chuyển đổi nào. Tăng nếu đối tượng không phải là đối tượng byte. Biến C cũng có thể được khai báo là * .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
522 [] [PyByteArrayObject *]

Yêu cầu đối tượng Python là một đối tượng mà không cần thực hiện bất kỳ chuyển đổi nào. Tăng nếu đối tượng không phải là một đối tượng. Biến C cũng có thể được khai báo là * .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
527 [] [const Py_UNICODE *]

Chuyển đổi đối tượng Unicode Python thành con trỏ C thành bộ đệm ký tự Unicode kết thúc bằng NUL. Bạn phải chuyển địa chỉ của một biến con trỏ, biến này sẽ chứa đầy con trỏ tới bộ đệm Unicode hiện có. Xin lưu ý rằng độ rộng của một ký tự phụ thuộc vào các tùy chọn biên dịch [nó là 16 hoặc 32 bit]. Chuỗi Python không được chứa các điểm mã null được nhúng;

Đã thay đổi trong phiên bản 3. 5. Trước đây, đã được nêu ra khi gặp phải các điểm mã null được nhúng trong chuỗi Python.

Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API kiểu cũ; .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
545 [] [const Py_UNICODE *, ]

Biến thể này trên

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
527 lưu trữ thành hai biến C, biến thứ nhất là con trỏ tới bộ đệm dữ liệu Unicode, biến thứ hai là độ dài của nó. Biến thể này cho phép điểm mã null

Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API kiểu cũ; .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
01 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const Py_UNICODE *]

Giống như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
527, nhưng đối tượng Python cũng có thể là
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371, trong trường hợp đó, con trỏ được đặt thành
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0

Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API kiểu cũ; .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
10 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const Py_UNICODE *, ]

Giống như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
545, nhưng đối tượng Python cũng có thể là
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371, trong trường hợp đó, con trỏ được đặt thành
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0

Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 3. 12. Một phần của API kiểu cũ; .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
20 [] [PyObject *]

Yêu cầu đối tượng Python là đối tượng Unicode mà không cần thực hiện bất kỳ chuyển đổi nào. Tăng nếu đối tượng không phải là đối tượng Unicode. Biến C cũng có thể được khai báo là * .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
23 [đọc-ghi ] [Py_buffer]

Định dạng này chấp nhận bất kỳ đối tượng nào thực hiện giao diện bộ đệm đọc-ghi. Nó điền vào một cấu trúc được cung cấp bởi người gọi. Bộ đệm có thể chứa các byte rỗng được nhúng. Người gọi phải gọi khi hoàn thành với bộ đệm

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
1 [] [mã hóa const char *, bộ đệm char **]

Biến thể này trên

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292 được sử dụng để mã hóa Unicode thành bộ đệm ký tự. Nó chỉ hoạt động đối với dữ liệu được mã hóa mà không có byte NUL được nhúng

Định dạng này yêu cầu hai đối số. Đầu tiên chỉ được sử dụng làm đầu vào và phải là const char* which points to the name of an encoding as a NUL-terminated string, or

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, in which case
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295 encoding is used. An exception is raised if the named encoding is not known to Python. The second argument must be a char** ; . Văn bản sẽ được mã hóa trong mã hóa được chỉ định bởi đối số đầu tiên.

sẽ phân bổ bộ đệm có kích thước cần thiết, sao chép dữ liệu được mã hóa vào bộ đệm này và điều chỉnh bộ đệm * để tham chiếu bộ nhớ mới được phân bổ. Người gọi có trách nhiệm gọi để giải phóng bộ đệm được cấp phát sau khi sử dụng

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
3 [, hoặc ] [const char *encoding, char **buffer]

Giống như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
1 ngoại trừ các đối tượng chuỗi byte được chuyển qua mà không cần mã hóa lại chúng. Thay vào đó, việc triển khai giả định rằng đối tượng chuỗi byte sử dụng mã hóa được truyền dưới dạng tham số

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
2 [] [const char *encoding, char **buffer, *buffer_length]

Biến thể này trên

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6 được sử dụng để mã hóa Unicode thành bộ đệm ký tự. Không giống như định dạng
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
1, biến thể này cho phép nhập dữ liệu chứa các ký tự NUL

Nó yêu cầu ba đối số. Đầu tiên chỉ được sử dụng làm đầu vào và phải là const char* which points to the name of an encoding as a NUL-terminated string, or

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, in which case
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295 encoding is used. An exception is raised if the named encoding is not known to Python. The second argument must be a char** ; . Văn bản sẽ được mã hóa trong mã hóa được chỉ định bởi đối số đầu tiên. Đối số thứ ba phải là một con trỏ tới một số nguyên; .

Có hai chế độ hoạt động

Nếu *buffer trỏ đến một con trỏ

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, hàm sẽ cấp phát một bộ đệm có kích thước cần thiết, sao chép dữ liệu được mã hóa vào bộ đệm này và đặt *buffer để tham chiếu bộ nhớ mới được cấp phát. Người gọi chịu trách nhiệm gọi để giải phóng bộ đệm được phân bổ sau khi sử dụng

Nếu *buffer trỏ đến một con trỏ không phải ____50 [bộ đệm đã được phân bổ], sẽ sử dụng vị trí này làm bộ đệm và diễn giải giá trị ban đầu của *buffer_length làm kích thước bộ đệm. Sau đó, nó sẽ sao chép dữ liệu được mã hóa vào bộ đệm và kết thúc NUL. Nếu bộ đệm không đủ lớn, a sẽ được đặt

Trong cả hai trường hợp, *buffer_length được đặt thành độ dài của dữ liệu được mã hóa mà không có byte NUL ở cuối

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
4 [, hoặc ] [const char *encoding, char **buffer, *buffer_length]

Tương tự như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
2 ngoại trừ các đối tượng chuỗi byte được chuyển qua mà không cần mã hóa lại chúng. Thay vào đó, việc triển khai giả định rằng đối tượng chuỗi byte sử dụng mã hóa được truyền dưới dạng tham số

số

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
56 [] [ký tự không dấu]

Chuyển đổi một số nguyên Python không âm thành một int nhỏ không dấu, được lưu trữ trong C unsigned char .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
58 [] [ký tự không dấu]

Chuyển đổi số nguyên Python thành int nhỏ mà không cần kiểm tra lỗi tràn, được lưu trữ trong C unsigned char .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
60 [] [viết tắt]

Chuyển đổi số nguyên Python thành C viết tắt int .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
62 [] [unsigned short int]

Chuyển đổi số nguyên Python thành C unsigned short int, without overflow checking.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
64 [] [int]

Chuyển đổi số nguyên Python thành C int đơn giản.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
66 [] [int không dấu]

Chuyển đổi số nguyên Python thành C unsigned int mà không cần kiểm tra tràn.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
68 [] [dài int]

Chuyển đổi số nguyên Python thành C long int .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
70 [] [dài không dấu]

Chuyển đổi số nguyên Python thành C unsigned long mà không cần kiểm tra tràn.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
72 [] [dài dài]

Chuyển đổi số nguyên Python thành C long long .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
74 [] [dài dài không dấu]

Chuyển đổi số nguyên Python thành C unsigned long long without overflow checking.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
76 [] []

Chuyển đổi một số nguyên Python thành C

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
80 [ hoặc độ dài 1] [char]

Chuyển đổi byte Python, được biểu thị dưới dạng đối tượng hoặc đối tượng có độ dài 1, thành C char .

Đã thay đổi trong phiên bản 3. 3. Cho phép đối tượng.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
86 [ độ dài 1] [int]

Chuyển đổi ký tự Python, được biểu thị dưới dạng đối tượng có độ dài 1, thành C int .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
89 [] [phao]

Chuyển đổi số dấu phẩy động Python thành C float .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
91 [] [gấp đôi]

Chuyển đổi số dấu phẩy động Python thành C double .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
93 [] [Py_complex]

Chuyển đổi số phức Python thành cấu trúc C

đối tượng khác

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
96 [đối tượng] [PyObject *]

Lưu trữ đối tượng Python [không có bất kỳ chuyển đổi nào] trong con trỏ đối tượng C. Do đó, chương trình C nhận được đối tượng thực tế đã được thông qua. Số tham chiếu của đối tượng không tăng. Con trỏ được lưu trữ không phải là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
98 [đối tượng] [typeobject, PyObject *]

Lưu trữ đối tượng Python trong con trỏ đối tượng C. Điều này tương tự như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
96, nhưng có hai đối số C. đầu tiên là địa chỉ của một đối tượng kiểu Python, thứ hai là địa chỉ của biến C [kiểu * ] mà con trỏ đối tượng được lưu trữ vào đó. Nếu đối tượng Python không có loại yêu cầu, được nâng lên.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
297 [đối tượng] [bộ chuyển đổi, bất cứ thứ gì]

Chuyển đối tượng Python thành biến C thông qua hàm chuyển đổi. Điều này có hai đối số. cái đầu tiên là một hàm, cái thứ hai là địa chỉ của một biến C [kiểu tùy ý], được chuyển đổi thành void*. The converter function in turn is called as follows:

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
8

trong đó đối tượng là đối tượng Python được chuyển đổi và địa chỉ là đối số void* . Trạng thái được trả về phải là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
03 đối với chuyển đổi thành công và
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
04 nếu chuyển đổi không thành công. Khi chuyển đổi không thành công, chức năng chuyển đổi sẽ đưa ra một ngoại lệ và giữ nguyên nội dung của địa chỉ.

Nếu trình chuyển đổi trả về

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
05, thì nó có thể được gọi lần thứ hai nếu việc phân tích cú pháp đối số cuối cùng không thành công, tạo cơ hội cho trình chuyển đổi giải phóng bất kỳ bộ nhớ nào mà nó đã cấp phát. Trong cuộc gọi thứ hai này, tham số đối tượng sẽ là
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0;

Đã thay đổi trong phiên bản 3. 1. ______505 đã được thêm vào.

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
08 [] [int]

Kiểm tra giá trị được truyền vào có đúng không [một vị từ boolean] và chuyển đổi kết quả thành giá trị số nguyên đúng/sai C tương đương của nó. Đặt int thành

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
03 nếu biểu thức là đúng và
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
04 nếu là sai. Điều này chấp nhận mọi giá trị Python hợp lệ. Xem để biết thêm thông tin về cách Python kiểm tra giá trị cho sự thật

Mới trong phiên bản 3. 3

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
12 [] [mục phù hợp]

Đối tượng phải là một chuỗi Python có độ dài là số đơn vị định dạng trong các mục. Các đối số C phải tương ứng với các đơn vị định dạng riêng lẻ trong các mục. Các đơn vị định dạng cho các chuỗi có thể được lồng vào nhau

Có thể chuyển các số nguyên “dài” [các số nguyên có giá trị vượt quá

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
14 của nền tảng] tuy nhiên không có việc kiểm tra phạm vi thích hợp nào được thực hiện — các bit quan trọng nhất sẽ bị cắt âm thầm khi trường nhận quá nhỏ để nhận giá trị [thực ra, ngữ nghĩa là

Một vài ký tự khác có ý nghĩa trong một chuỗi định dạng. Những điều này có thể không xảy ra bên trong dấu ngoặc đơn lồng nhau. họ đang

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
15

Cho biết rằng các đối số còn lại trong danh sách đối số Python là tùy chọn. Các biến C tương ứng với các đối số tùy chọn phải được khởi tạo thành giá trị mặc định của chúng — khi một đối số tùy chọn không được chỉ định, không chạm vào nội dung của [các] biến C tương ứng

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
17

chỉ có. Cho biết rằng các đối số còn lại trong danh sách đối số Python chỉ là từ khóa. Hiện tại, tất cả các đối số chỉ có từ khóa cũng phải là đối số tùy chọn, do đó,

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
15 phải luôn được chỉ định trước
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
17 trong chuỗi định dạng

Mới trong phiên bản 3. 3

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
21

Danh sách các đơn vị định dạng kết thúc ở đây;

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
23

Danh sách các đơn vị định dạng kết thúc ở đây; .

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
21 và
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
23 loại trừ lẫn nhau

Lưu ý rằng bất kỳ tham chiếu đối tượng Python nào được cung cấp cho người gọi đều là tham chiếu mượn;

Các đối số bổ sung được truyền cho các hàm này phải là địa chỉ của các biến có loại được xác định bởi chuỗi định dạng; . Có một vài trường hợp, như được mô tả trong danh sách các đơn vị định dạng ở trên, trong đó các tham số này được sử dụng làm giá trị đầu vào;

Để chuyển đổi thành công, đối tượng arg phải phù hợp với định dạng và định dạng phải hết. Khi thành công, các hàm

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
02 trả về true, nếu không, chúng trả về false và đưa ra một ngoại lệ thích hợp. Khi các hàm
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
02 không thành công do lỗi chuyển đổi ở một trong các đơn vị định dạng, các biến tại địa chỉ tương ứng với đơn vị định dạng đó và các đơn vị định dạng sau sẽ không bị ảnh hưởng

Hàm API

int PyArg_ParseTuple[ *args, const char *format, ...]
Một phần của.

Phân tích các tham số của hàm chỉ nhận các tham số vị trí thành các biến cục bộ. Trả về true khi thành công;

int PyArg_VaPude[ *args, const char *format, va_list vargs]
Part of the .

Giống với , ngoại trừ việc nó chấp nhận một va_list hơn là một số đối số có thể thay đổi

int PyArg_PudeTupleAndKeywords[ *args, *kw, const char *format, char *keywords[], ...]
Một phần của.

Phân tích cú pháp các tham số của một hàm đưa cả tham số vị trí và từ khóa vào các biến cục bộ. Đối số từ khóa là một mảng tên tham số từ khóa có đầu cuối là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0. Tên trống biểu thị. Trả về true khi thành công;

Đã thay đổi trong phiên bản 3. 6. Đã thêm hỗ trợ cho.

int PyArg_VaPudeTupleAndKeywords[ *args, *kw, const char *format, char *keywords[], va_list vargs]
Part of the .

Giống với , ngoại trừ việc nó chấp nhận một va_list hơn là một số đối số có thể thay đổi

int PyArg_ValidateKeywordArguments[*]
Part of the .

Đảm bảo rằng các khóa trong từ điển đối số từ khóa là các chuỗi. Điều này chỉ cần thiết nếu không được sử dụng, vì cái sau đã thực hiện việc kiểm tra này

Mới trong phiên bản 3. 2

int PyArg_Parse[ *args, const char *format, ...]
Một phần của.

Hàm được sử dụng để giải cấu trúc danh sách đối số của các hàm “kiểu cũ” — đây là các hàm sử dụng phương thức phân tích tham số

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
32, đã bị xóa trong Python 3. Điều này không được khuyến nghị sử dụng trong phân tích tham số trong mã mới và hầu hết mã trong trình thông dịch tiêu chuẩn đã được sửa đổi để không còn sử dụng điều này cho mục đích đó nữa. Tuy nhiên, nó vẫn là một cách thuận tiện để phân tách các bộ dữ liệu khác và có thể tiếp tục được sử dụng cho mục đích đó

int PyArg_UnpackTuple[ *args, const char *name, min, max, ...]
Một phần của.

Một dạng truy xuất tham số đơn giản hơn không sử dụng chuỗi định dạng để chỉ định loại đối số. Các hàm sử dụng phương thức này để truy xuất các tham số của chúng phải được khai báo như trong bảng hàm hoặc phương thức. Tuple chứa các tham số thực tế phải được truyền dưới dạng args; . Độ dài của bộ dữ liệu ít nhất phải là tối thiểu và không quá tối đa; . Các đối số bổ sung phải được chuyển đến hàm, mỗi đối số phải là một con trỏ tới một biến * ; . Các biến tương ứng với các tham số tùy chọn không được cung cấp bởi các đối số sẽ không được điền vào; . Hàm này trả về true khi thành công và trả về false nếu args không phải là một bộ hoặc chứa sai số phần tử; .

Đây là một ví dụ về việc sử dụng chức năng này, được lấy từ các nguồn cho mô-đun trình trợ giúp

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
34 để tham khảo yếu

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}

Cuộc gọi đến trong ví dụ này hoàn toàn tương đương với cuộc gọi này đến

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]

xây dựng giá trị

*Py_BuildValue[const char *format, ...]
Trả về giá trị. Tài liệu tham khảo mới. một phần của.

Tạo một giá trị mới dựa trên một chuỗi định dạng tương tự như các chuỗi được chấp nhận bởi họ hàm

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
02 và một chuỗi các giá trị. Trả về giá trị hoặc
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0 trong trường hợp có lỗi;

không phải lúc nào cũng xây dựng một tuple. Nó chỉ xây dựng một bộ nếu chuỗi định dạng của nó chứa hai hoặc nhiều đơn vị định dạng. Nếu chuỗi định dạng trống, nó sẽ trả về

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371; . Để buộc nó trả về một bộ có kích thước 0 hoặc một, hãy đặt dấu ngoặc đơn cho chuỗi định dạng

Khi bộ đệm bộ nhớ được truyền dưới dạng tham số để cung cấp dữ liệu để xây dựng đối tượng, như đối với định dạng

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292 và
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6, dữ liệu cần thiết sẽ được sao chép. Bộ đệm được cung cấp bởi người gọi không bao giờ được tham chiếu bởi các đối tượng được tạo bởi. Nói cách khác, nếu mã của bạn gọi
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
45 và chuyển bộ nhớ được cấp phát tới , thì mã của bạn chịu trách nhiệm gọi
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
47 cho bộ nhớ đó sau khi trả về

Trong mô tả sau đây, hình thức được trích dẫn là đơn vị định dạng;

Khoảng cách ký tự, tab, dấu hai chấm và dấu phẩy bị bỏ qua trong các chuỗi định dạng [nhưng không phải trong các đơn vị định dạng như

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6]. Điều này có thể được sử dụng để làm cho các chuỗi định dạng dài dễ đọc hơn một chút

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *]

Chuyển đổi chuỗi C kết thúc null thành đối tượng Python bằng cách sử dụng mã hóa

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295. Nếu con trỏ chuỗi C là
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, thì
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371 được sử dụng

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *, ]

Chuyển đổi chuỗi C và độ dài của nó thành đối tượng Python bằng cách sử dụng mã hóa

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
295. Nếu con trỏ chuỗi C là
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, độ dài bị bỏ qua và trả về
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
280 [] [const char *]

Điều này chuyển đổi một chuỗi C thành một đối tượng Python. Nếu con trỏ chuỗi C là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, thì trả về
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
7 [] [const char *, ]

Điều này chuyển đổi một chuỗi C và độ dài của nó thành một đối tượng Python. Nếu con trỏ chuỗi C là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, thì trả về
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
369 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *]

Tương tự như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
273 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *, ]

Giống như

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
527 [] [const wchar_t *]

Chuyển đổi bộ đệm wchar_t kết thúc null của dữ liệu Unicode [UTF-16 hoặc UCS-4] thành đối tượng Unicode Python. Nếu con trỏ bộ đệm Unicode là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, thì trả về
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
545 [] [const wchar_t *, ]

Chuyển đổi bộ đệm dữ liệu Unicode [UTF-16 hoặc UCS-4] và độ dài của nó thành đối tượng Unicode Python. Nếu con trỏ bộ đệm Unicode là

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, thì độ dài bị bỏ qua và trả về
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
20 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *]

Tương tự như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
292

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
97 [ hoặc
static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
371] [const char *, ]

Giống như

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
6

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
64 [] [int]

Chuyển đổi C int đơn giản thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
56 [] [char]

Chuyển đổi C char đơn giản thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
60 [] [viết tắt]

Chuyển đổi C ngắn int đơn giản thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
68 [] [dài int]

Chuyển đổi C long int thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
58 [] [ký tự không dấu]

Chuyển đổi C unsigned char thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
62 [] [unsigned short int]

Chuyển C unsigned short int sang Python .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
66 [] [int không dấu]

Chuyển đổi C unsigned int thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
70 [] [dài không dấu]

Chuyển đổi C unsigned long thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
72 [] [dài dài]

Chuyển đổi C long long thành đối tượng số nguyên Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
74 [] [dài dài không dấu]

Chuyển C unsigned long long sang Python .

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
76 [] []

Chuyển đổi một C thành một số nguyên Python

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
80 [ độ dài 1] [char]

Chuyển đổi C int đại diện cho một byte thành đối tượng Python có độ dài 1.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
86 [ độ dài 1] [int]

Chuyển đổi một C int đại diện cho một ký tự thành đối tượng Python có độ dài 1.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
91 [] [gấp đôi]

Chuyển đổi C double thành số dấu phẩy động Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
89 [] [phao]

Chuyển đổi C float thành số dấu phẩy động Python.

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
93 [] [Py_complex *]

Chuyển đổi cấu trúc C thành số phức Python

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
96 [đối tượng] [PyObject *]

Vượt qua một đối tượng Python không bị ảnh hưởng [ngoại trừ số lượng tham chiếu của nó, được tăng thêm một]. Nếu đối tượng được truyền vào là một con trỏ

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0, giả định rằng điều này xảy ra do lệnh gọi tạo đối số đã tìm thấy lỗi và đặt một ngoại lệ. Do đó, sẽ trả về
PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
0 nhưng sẽ không đưa ra ngoại lệ. Nếu chưa có ngoại lệ nào được đưa ra, được đặt

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
288 [đối tượng] [PyObject *]

Tương tự như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
96

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
2946 [đối tượng] [PyObject *]

Tương tự như

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
96, ngoại trừ nó không tăng số lượng tham chiếu trên đối tượng. Hữu ích khi đối tượng được tạo bởi lệnh gọi hàm tạo đối tượng trong danh sách đối số

static PyObject *
weakref_ref[PyObject *self, PyObject *args]
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if [PyArg_UnpackTuple[args, "ref", 1, 2, &object, &callback]] {
        result = PyWeakref_NewRef[object, callback];
    }
    return result;
}
297 [đối tượng] [bộ chuyển đổi, bất cứ thứ gì]

Chuyển đổi mọi thứ thành đối tượng Python thông qua chức năng chuyển đổi. Hàm được gọi với bất kỳ thứ gì [tương thích với void* ] làm đối số của nó và sẽ trả về “ .

PyArg_ParseTuple[args, "O|O:ref", &object, &callback]
12 [] [mục phù hợp]

Chuyển đổi một chuỗi các giá trị C thành từ điển Python. Mỗi cặp giá trị C liên tiếp sẽ thêm một mục vào từ điển, tương ứng đóng vai trò là khóa và giá trị

Đối số trả về trong Python là gì?

args là một danh sách. nếu bạn trả về một chuỗi [danh sách, bộ], Python sẽ cố gắng lặp lại và gán cho các biến d, e, f của bạn . vì vậy mã sau đây là ok. chắc chắn xin chào [* args]. return args d, e, f = hello[1,2,3] Miễn là bạn có đúng số giá trị trong danh sách *args.

Các đối số được truyền bằng Python như thế nào?

Python chuyển đối số bằng cách gán. Nghĩa là, khi bạn gọi một hàm Python, mỗi đối số của hàm sẽ trở thành một biến mà giá trị được truyền vào được gán. .
Nếu một đối tượng đại diện cho giá trị 2 đã tồn tại, thì nó sẽ được truy xuất. .
Bộ đếm tham chiếu của đối tượng này được tăng lên

Chủ Đề