Là đối tượng loại số?
>>> isinstance[1, object]
True
Rõ ràng họ là. :-].
Lưu ý rằng bạn có thể cần điều chỉnh mô hình tinh thần của mình một chút. Dường như với tôi rằng bạn đang nghĩ về object
như một thứ gì đó "có thể thay đổi" - đó không phải là trường hợp. Trong thực tế, chúng ta cần nghĩ về các tên Python như một tài liệu tham khảo cho một đối tượng. Đối tượng đó có thể giữ các tham chiếu đến các đối tượng khác.
name = something
Ở đây, phía bên tay phải được đánh giá - tất cả các tên được giải quyết thành các đối tượng và kết quả của biểu thức [một đối tượng] được tham chiếu bằng "tên".
Ok, bây giờ hãy xem xét những gì xảy ra khi bạn chuyển một cái gì đó cho một chức năng.
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
Chúng ta mong đợi điều gì sẽ xảy ra ở đây? Vâng, trước tiên chúng tôi tạo chức năng foo
. Tiếp theo, chúng tôi tạo đối tượng 3
và tham chiếu nó bằng tên z
. Sau đó, chúng tôi tra cứu giá trị mà các tài liệu tham khảo z
và chuyển giá trị đó cho foo
. Khi nhập foo
, giá trị đó được tham chiếu bởi tên [cục bộ]
name = something
1. Sau đó, chúng tôi tạo đối tượng 2 và tham chiếu nó bằng tên địa phương name = something
1. Lưu ý, name = something
1 không liên quan gì đến toàn cầu z
- chúng là các tài liệu tham khảo độc lập. Chỉ vì họ đã tham khảo cùng một đối tượng khi bạn nhập chức năng không có nghĩa là chúng phải tham chiếu chức năng cho mọi thời đại. Chúng ta có thể thay đổi những gì một tham chiếu tên tại bất kỳ điểm nào bằng cách sử dụng câu lệnh gán.Lưu ý, ví dụ của bạn với += dường như làm phức tạp mọi thứ, nhưng bạn có thể nghĩ
name = something
5 là name = something
6 nếu nó giúp trong bối cảnh này. Để biết thêm thông tin về += Kiểm tra: Khi nào là "i += x" khác với "i = i +x" trong python? Tất cả mọi thứ trong Python là một đối tượng bao gồm các lớp. Tất cả các lớp là các trường hợp của một lớp gọi là "loại". Đối tượng loại cũng là một thể hiện của loại loại. Bạn có thể kiểm tra hệ thống phân cấp kế thừa của lớp bằng cách kiểm tra thuộc tính __base__ của một đối tượng lớp.
Là số là đối tượng?
Số là một đối tượng trình bao bọc nguyên thủy được sử dụng để biểu diễn và thao tác các số như 37 hoặc -9,25. Chất xây dựng số chứa các hằng số và phương pháp để làm việc với các số. Các giá trị của các loại khác có thể được chuyển đổi thành số bằng hàm số []. PyLongObject¶Part of the Limited API [as an opaque struct].
Tất cả các số nguyên được thực hiện dưới dạng các đối tượng số nguyên dài có kích thước tùy ý.
Theo lỗi, hầu hết các APIname = something
7 trả về name = something
8 không thể phân biệt được với một số. Sử dụng name = something
9 để định hướng.PyLong_Type¶Part of the Stable ABI.
TypePyLongObject¶ một phần của API giới hạn [như một cấu trúc mờ].
Loại phụ này củadef foo[x]:
x = 2
z = 3
foo[z]
print[z]
0 đại diện cho một đối tượng số nguyên Python.PyLong_Check[PyObject*p]¶Return true if its argument is a
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 or a subtype of def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3. This function always succeeds. Pytypeobjectpylong_type¶ một phần của ABI ổn định.
PyLong_CheckExact[PyObject*p]¶Return true if its argument is a
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, but not a subtype of def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3. This function always succeeds. Ví dụ này của def foo[x]:
x = 2
z = 3
foo[z]
print[z]
1 đại diện cho loại số nguyên Python. Đây là cùng một đối tượng với def foo[x]:
x = 2
z = 3
foo[z]
print[z]
2 trong lớp Python.
*PyLong_FromLong[longv]¶Return value: New reference. Part of the Stable ABI.
intpylong_check [pyobject*p] return true nếu lập luận của nó là
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 hoặc một kiểu con của def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3. Chức năng này luôn thành công.intpylong_checkexact [pyobject*p] return true nếu lập luận của nó là
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, nhưng không phải là một loại phụ của def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3. Chức năng này luôn thành công.
PyObject*pylong_fromlong [longv] Giá trị return: Tài liệu tham khảo mới. Một phần của ABI ổn định.*PyLong_FromUnsignedLong[unsignedlong
v]¶Return value: New reference. Part of the Stable ABI.
Trả về một đối tượng
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 mới từ V hoặc def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 khi thất bại.unsignedlong, or def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 on failure. Việc triển khai hiện tại giữ một loạt các đối tượng số nguyên cho tất cả các số nguyên giữa def foo[x]:
x = 2
z = 3
foo[z]
print[z]
9 và object
0. Khi bạn tạo một INT trong phạm vi đó, bạn thực sự chỉ cần lấy lại một tham chiếu đến đối tượng hiện có.
*PyLong_FromSsize_t[Py_ssize_tv]¶Return value: New reference. Part of the Stable ABI.
PyObject*pylong_fromunSignDlong [unsignedLongv] Giá trị return: Tài liệu tham khảo mới. Một phần của ABI ổn định.
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 mới từ c unsignlong hoặc def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 khi thất bại.*PyLong_FromSize_t[size_tv]¶Return value: New reference. Part of the Stable ABI.
PyObject*pylong_fromssize_t [py_ssize_tv] Giá trị return: Tham khảo mới. Một phần của ABI ổn định.
Pyobject*pylong_fromlonglong [longlongv] Giá trị return: Tài liệu tham khảo mới. Một phần của ABI ổn định.*PyLong_FromLongLong[longlong v]¶Return value: New reference. Part of the Stable ABI.
Trả về một đối tượng
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 mới từ một C dài hoặc def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 khi thất bại.longlong, or def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 on failure. PyObject*pylong_fromunsignLongLong [unsignedLongLongV] Giá trị return: Tài liệu tham khảo mới. Một phần của ABI ổn định.*PyLong_FromUnsignedLongLong[unsignedlong
longv]¶Return value: New reference. Part of the Stable ABI.
Trả về một đối tượng
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 mới từ c unsignlonglong, hoặc def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 về thất bại.unsignedlonglong, or def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 on failure. PyObject*pylong_fromdouble [doublev] Giá trị return: Tham khảo mới. Một phần của ABI ổn định.
*PyLong_FromDouble[doublev]¶Return value: New reference. Part of the Stable ABI.
Trả về một đối tượng
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 mới từ phần số nguyên của V hoặc def foo[x]:
x = 2
z = 3
foo[z]
print[z]
8 khi thất bại. PyObject*pylong_fromString [Constchar*str, char ** pend, intbase] Giá trị return: tham chiếu mới. Một phần của ABI ổn định.
*PyLong_FromString[constchar*str, char**pend, int
base]¶Return value: New reference. Part of the Stable ABI.
Trả về một
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3 mới dựa trên giá trị chuỗi trong str, được giải thích theo radix trong cơ sở. Nếu Pend không phải là -____ 28, *Pend sẽ trỏ đến ký tự đầu tiên trong STR theo biểu diễn của số. Nếu cơ sở là object
7, STR được giải thích bằng định nghĩa theo chữ số nguyên; Trong trường hợp này, các số không hàng đầu trong một số thập phân khác không tăng object
8. Nếu cơ sở không phải là object
7, nó phải nằm giữa foo
0 và foo
1, bao gồm. Không gian hàng đầu và gạch dưới đơn sau khi một nhà xác định cơ sở và giữa các chữ số bị bỏ qua. Nếu không có chữ số, object
8 sẽ được nâng lên.Integer literals definition; in this case, leading zeros in a non-zero decimal
number raises a object
8. If base is not object
7, it must be between foo
0 and foo
1, inclusive. Leading spaces and single underscores after a base specifier and between digits are ignored. If there are no digits, object
8 will be raised. PyObject*pylong_fromunicodeObject [PyObject*u, intbase] Giá trị return: Tham khảo mới.*PyLong_FromUnicodeObject[PyObject*u,
intbase]¶Return value: New reference.
Chuyển đổi một chuỗi các chữ số unicode trong chuỗi u thành giá trị số nguyên python.
Mới trong phiên bản 3.3.
PyObject*pylong_fromvoidptr [void*p] Giá trị trả về: Tài liệu tham khảo mới. Một phần của ABI ổn định.*PyLong_FromVoidPtr[void*p]¶Return value: New reference. Part of the Stable ABI.
Tạo một số nguyên python từ con trỏ p. Giá trị con trỏ có thể được lấy từ giá trị kết quả bằng cách sử dụng foo
3.
Part of the Stable ABI.
Trả lại một đại diện dài của obj. Nếu OBJ không phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, trước tiên hãy gọi phương thức foo
5 của nó [nếu có] để chuyển đổi nó thành def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.long representation of obj. If obj is not an instance of def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, first call its foo
5 method [if present] to convert it to a
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Tăng foo
7 nếu giá trị của OBJ nằm ngoài phạm vi dài.long.
Trả về foo
8 khi lỗi. Sử dụng
name = something
9 để định hướng.Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.Use foo
5 if available.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.This function will no longer use 3
1.
Part of the Stable ABI.
Trả lại một đại diện dài của obj. Nếu OBJ không phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, trước tiên hãy gọi phương thức foo
5 của nó [nếu có] để chuyển đổi nó thành def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.long representation of obj. If obj is not an instance of
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, first call its foo
5 method [if present] to convert it to a def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Tăng foo
7 nếu giá trị của OBJ nằm ngoài phạm vi dài.
Trả về foo
8 khi lỗi. Sử dụng
name = something
9 để định hướng.Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.Use foo
5 if available.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.This function will no longer use 3
1.
Part of the Stable ABI.
Nếu giá trị của OBJ lớn hơn 3
5 hoặc nhỏ hơn 3
6, hãy đặt *tràn thành 3
7 hoặc foo
8, và trả về foo
8; Nếu không, đặt *tràn thành object
7. Nếu bất kỳ ngoại lệ nào khác xảy ra được đặt *tràn thành object
7 và trả về foo
8 như bình thường.longlong representation of obj. If obj is not an
instance of
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, first call its foo
5 method [if present] to convert it to a def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.longlongpylong_aslonglong [Pyobject*obj] một phần của ABI ổn định.longlong.
Trả về foo
8 khi lỗi. Sử dụng
name = something
9 để định hướng.Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.Use foo
5 if available.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.This function will no longer use 3
1.
Part of the Stable ABI.
Nếu giá trị của OBJ lớn hơn 3
5 hoặc nhỏ hơn 3
6, hãy đặt *tràn thành 3
7 hoặc foo
8, và trả về foo
8; Nếu không, đặt *tràn thành object
7. Nếu bất kỳ ngoại lệ nào khác xảy ra được đặt *tràn thành object
7 và trả về foo
8 như bình thường.longlong representation of obj. If obj is not an
instance of
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, first call its foo
5 method [if present] to convert it to a def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.longlongpylong_aslonglong [Pyobject*obj] một phần của ABI ổn định.
Trả về foo
8 khi lỗi. Sử dụng
name = something
9 để định hướng.Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.
Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.Use foo
5 if available.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.This function will no longer use
3
1.
Part of the Stable ABI.
Nếu giá trị của OBJ lớn hơn 3
5 hoặc nhỏ hơn 3
6, hãy đặt *tràn thành 3
7 hoặc foo
8, và trả về foo
8; Nếu không, đặt *tràn thành object
7. Nếu bất kỳ ngoại lệ nào khác xảy ra được đặt *tràn thành object
7 và trả về foo
8 như bình thường.
longlongpylong_aslonglong [Pyobject*obj] một phần của ABI ổn định.
Trả về foo
8 khi lỗi. Sử dụng
name = something
9 để định hướng. Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.long
PyLong_AsUnsignedLong[PyObject*pylong]¶Part of the Stable ABI.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.unsignedlong representation of pylong. pylong must be an instance of
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.longpylong_aslongandoverflow [pyobject*obj, int*tràn] ¶ một phần của abi ổn định.unsignedlong.
Trả về
name = something
08 khi lỗi. Sử dụng name = something
9 để định hướng.
size_tpylong_assize_t [PyObject*pylong] một phần của ABI ổn định.PyLong_AsSize_t[PyObject*pylong]¶Part of the Stable ABI.
Trả lại một đại diện C object
7 của pylong. Pylong phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Tăng foo
7 nếu giá trị của pylong nằm ngoài phạm vi cho object
7.
Trả về
name = something
14 về lỗi. Sử dụng name = something
9 để định hướng. unsignedlonglongpylong_asunsignedlonglong [pyobject*pylong] Một phần của abi ổn định.longlong
PyLong_AsUnsignedLongLong[PyObject*pylong]¶Part of the Stable ABI.
Trả lại một đại diện không dấu C của pylong. Pylong phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.unsignedlonglong representation of pylong. pylong must be an instance of def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Tăng foo
7 nếu giá trị của pylong nằm ngoài phạm vi cho một unsignedlong long.unsignedlonglong.
Trả về
name = something
18 về lỗi. Sử dụng name = something
9 để định hướng. unsignedlongpylong_asunsignedlongmask [pyobject*obj] một phần của abi ổn định.longPyLong_AsUnsignedLongMask[PyObject
*obj]¶Part of the Stable ABI.
Trả lại một đại diện không dấu C của OBJ. Nếu OBJ không phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, trước tiên hãy gọi phương thức foo
5 của nó [nếu có] để chuyển đổi nó thành def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.unsignedlong representation of obj. If obj is not an instance
of def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, first call its foo
5 method [if present] to convert it to a def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Nếu giá trị của OBJ nằm ngoài phạm vi cho unsignlong, hãy trả lại việc giảm giá trị đó
name = something
23.unsignedlong, return the reduction of that value modulo name = something
23.Trả về
name = something
08 khi lỗi. Sử dụng name = something
9 để định hướng.Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.Use foo
5 if available.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.This function will no longer use 3
1.
Part of the Stable ABI.
Trả lại một đại diện không dấu C của OBJ. Nếu OBJ không phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, trước tiên hãy gọi phương thức foo
5 của nó [nếu có] để chuyển đổi nó thành def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.unsignedlonglong representation of obj. If obj is not an instance of def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, first call its foo
5 method [if present] to convert it to a
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Nếu giá trị của OBJ nằm ngoài phạm vi cho unsignLongLong, hãy trả lại việc giảm giá trị đó
name = something
31.unsignedlonglong, return the reduction of that value modulo name = something
31.Trả về
name = something
18 về lỗi. Sử dụng name = something
9 để định hướng.Đã thay đổi trong phiên bản 3.8: Sử dụng foo
5 nếu có.Use foo
5 if available.
Đã thay đổi trong phiên bản 3.10: Hàm này sẽ không còn sử dụng 3
1.This function will no longer use 3
1.
Part of the Stable ABI.
Trả lại một đại diện không dấu C của OBJ. Nếu OBJ không phải là một ví dụ của
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3, trước tiên hãy gọi phương thức foo
5 của nó [nếu có] để chuyển đổi nó thành def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.double representation of pylong. pylong must be an instance of
def foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.Nếu giá trị của OBJ nằm ngoài phạm vi cho unsignLongLong, hãy trả lại việc giảm giá trị đó
name = something
31.double.doublepylong_asdouble [pyobject*pylong] Một phần của abi ổn định.
Trả lại một đại diện k kép của pylong. Pylong phải là một ví dụ củadef foo[x]:
x = 2
z = 3
foo[z]
print[z]
3.
*PyLong_AsVoidPtr[PyObject*pylong]¶Part of the Stable ABI.
Tăng foo
7 nếu giá trị của pylong nằm ngoài phạm vi cho gấp đôi.void pointer. If pylong cannot be converted, an foo
7 will be raised. This is only assured to produce a usable void pointer for values created with
name = something
41.Trả về
name = something
38 về lỗi. Sử dụng name = something
9 để định hướng.