Hướng dẫn python co_varnames - python co_characters

Sự mô tả¶

Trả về một tuple chứa tên của các biến cục bộ (bắt đầu bằng tên đối số).

Show

Cú pháp

code.co_varnames

Giá trị trở lại

#TODO

Độ phức tạp về thời gian

#TODO

Thí dụ¶

>>> def foo(a, b=10):
...     c = 10
...     return a+b+c
...
>>> c = foo.func_code
>>> c.co_varnames
('a', 'b', 'c')

Xem thêm¶

#TODO

Như những người khác đã nói, đây dường như là một lỗi tài liệu. Tài liệu cho các đối tượng mã mâu thuẫn rõ ràng về tài liệu cho NO___Trans___PRE___19:a documentation error. The documentation for code objects clearly contradicts the documentation for

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
9:

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
0 là một tuple chứa tên của các biến cục bộ (bắt đầu bằng tên đối số); [...]
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
1 là một tuple chứa các tên được sử dụng bởi mã byte;a tuple containing the names of the local variables (starting with the argument names); [...]
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
1 is a tuple containing the names used by the bytecode;

Ngoài ra, truy cập các thuộc tính no___trans___pre___21 và no___trans___pre___20 của các đối tượng mã xung đột với những gì đã được nêu trong no___trans___pre___19:

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')

Hơn nữa, các nhận xét trong mã nguồn cho trình biên dịch của CPython đề cập rõ ràng rằng NO___Trans___Pre___20 là dành cho các biến cục bộ:

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */

Lý do bạn không thấy

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
0 là do mã trên là khởi tạo các thuộc tính cho đối tượng trình biên dịch mà Python sử dụng để biên dịch mã. NO___Trans___Pre___27 và NO___Trans___Pre___28 đều được chuyển vào NO___Trans___PRE___29 - Trình xây dựng cho các đối tượng mã Cpython:

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );

Và NO___Trans___PRE___29 gán NO___TRANS___PRE___31 và NO___TRANS___PRE___32 cho NO___TRANS___PRE___21 và NO___TRANS___PRE___20

Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;

Nếu bạn đã không có, tôi khuyên bạn nên điền vào báo cáo lỗi tại Bugs.Python.org để cho nhóm phát triển Python biết về sự không nhất quán này trong tài liệu.

Mã nguồn: lib/expect.py Lib/inspect.py

Nội phân chính

  • Các loại và thành viên
  • Lấy mã nguồn
  • Các thiết bị gọi nội tâm với đối tượng chữ ký
  • Các lớp học và chức năng
  • Người phiên dịch ngăn xếp
  • Tìm nạp các thuộc tính Statorment¶
  • Trạng thái hiện tại của máy phát điện và coroutines¶
  • Mã đối tượng Bit Flags¶
  • Giao diện dòng lệnh


Mô -đun NO___Trans___Pre___35 cũng cung cấp khả năng hướng nội cơ bản từ dòng lệnh.

Theo mặc định, chấp nhận tên của một mô -đun và in nguồn của mô -đun đó. Một lớp hoặc chức năng trong mô -đun có thể được in thay vào đó bằng cách thêm dấu hai chấm và tên đủ điều kiện của đối tượng đích.

Các loại và thành viên

Lấy mã nguồn

Các thiết bị gọi nội tâm với đối tượng chữ ký

Các lớp học và chức năng

Người phiên dịch ngăn xếp

Tìm nạp các thuộc tính Statorment¶

__doc__

Trạng thái hiện tại của máy phát điện và coroutines¶

__file__

Mô -đun NO___Trans___PRE___35 cung cấp một số chức năng hữu ích để giúp nhận thông tin về các đối tượng trực tiếp như mô -đun, lớp, phương thức, chức năng, dấu vết, đối tượng khung và đối tượng mã. Ví dụ: nó có thể giúp bạn kiểm tra nội dung của một lớp, truy xuất mã nguồn của một phương thức, trích xuất và định dạng danh sách đối số cho một hàm hoặc nhận tất cả thông tin bạn cần để hiển thị một dấu vết chi tiết.

class

__doc__

Trạng thái hiện tại của máy phát điện và coroutines¶

__name__

Mô -đun NO___Trans___PRE___35 cung cấp một số chức năng hữu ích để giúp nhận thông tin về các đối tượng trực tiếp như mô -đun, lớp, phương thức, chức năng, dấu vết, đối tượng khung và đối tượng mã. Ví dụ: nó có thể giúp bạn kiểm tra nội dung của một lớp, truy xuất mã nguồn của một phương thức, trích xuất và định dạng danh sách đối số cho một hàm hoặc nhận tất cả thông tin bạn cần để hiển thị một dấu vết chi tiết.

__qualname__

Có bốn loại dịch vụ chính được cung cấp bởi mô -đun này: kiểm tra loại, nhận mã nguồn, kiểm tra các lớp và chức năng và kiểm tra ngăn xếp trình thông dịch.

__module__

Hàm no___trans___pre___36 lấy các thành viên của một đối tượng như lớp hoặc mô -đun. Các chức năng có tên bắt đầu bằng cách mà là chủ yếu được cung cấp dưới dạng lựa chọn thuận tiện cho đối số thứ hai là no___trans___pre___36. Họ cũng giúp bạn xác định khi nào bạn có thể mong đợi tìm thấy các thuộc tính đặc biệt sau:

Loại hình

__doc__

Trạng thái hiện tại của máy phát điện và coroutines¶

__name__

Mô -đun NO___Trans___PRE___35 cung cấp một số chức năng hữu ích để giúp nhận thông tin về các đối tượng trực tiếp như mô -đun, lớp, phương thức, chức năng, dấu vết, đối tượng khung và đối tượng mã. Ví dụ: nó có thể giúp bạn kiểm tra nội dung của một lớp, truy xuất mã nguồn của một phương thức, trích xuất và định dạng danh sách đối số cho một hàm hoặc nhận tất cả thông tin bạn cần để hiển thị một dấu vết chi tiết.

__qualname__

Có bốn loại dịch vụ chính được cung cấp bởi mô -đun này: kiểm tra loại, nhận mã nguồn, kiểm tra các lớp và chức năng và kiểm tra ngăn xếp trình thông dịch.

__func__

Hàm no___trans___pre___36 lấy các thành viên của một đối tượng như lớp hoặc mô -đun. Các chức năng có tên bắt đầu bằng cách mà là chủ yếu được cung cấp dưới dạng lựa chọn thuận tiện cho đối số thứ hai là no___trans___pre___36. Họ cũng giúp bạn xác định khi nào bạn có thể mong đợi tìm thấy các thuộc tính đặc biệt sau:

__self__

Loại hình

__module__

Thuộc tính

function

__doc__

Trạng thái hiện tại của máy phát điện và coroutines¶

__name__

Mô -đun NO___Trans___PRE___35 cung cấp một số chức năng hữu ích để giúp nhận thông tin về các đối tượng trực tiếp như mô -đun, lớp, phương thức, chức năng, dấu vết, đối tượng khung và đối tượng mã. Ví dụ: nó có thể giúp bạn kiểm tra nội dung của một lớp, truy xuất mã nguồn của một phương thức, trích xuất và định dạng danh sách đối số cho một hàm hoặc nhận tất cả thông tin bạn cần để hiển thị một dấu vết chi tiết.

__qualname__

Có bốn loại dịch vụ chính được cung cấp bởi mô -đun này: kiểm tra loại, nhận mã nguồn, kiểm tra các lớp và chức năng và kiểm tra ngăn xếp trình thông dịch.

__code__

Hàm no___trans___pre___36 lấy các thành viên của một đối tượng như lớp hoặc mô -đun. Các chức năng có tên bắt đầu bằng cách mà là chủ yếu được cung cấp dưới dạng lựa chọn thuận tiện cho đối số thứ hai là no___trans___pre___36. Họ cũng giúp bạn xác định khi nào bạn có thể mong đợi tìm thấy các thuộc tính đặc biệt sau:bytecode

__defaults__

Tuple của bất kỳ giá trị mặc định nào cho các tham số từ khóa hoặc vị trí

__kwdefaults__

ánh xạ của bất kỳ giá trị mặc định nào cho các tham số chỉ từ khóa

__globals__

không gian tên toàn cầu trong đó chức năng này được xác định

__builtins__

không gian tên xây dựng

__annotations__

ánh xạ tên tham số để chú thích; NO___Trans___Pre___39 Khóa được dành riêng cho các chú thích trả lại.

__module__

Tên của mô -đun trong đó hàm này được xác định

tìm lại

tb_frame

đối tượng khung ở cấp độ này

tb_lasti

Chỉ mục hướng dẫn cố gắng cuối cùng trong mã byte

tb_lineno

Số dòng hiện tại trong mã nguồn Python

tb_next

Đối tượng Traceback bên trong tiếp theo (được gọi bởi cấp độ này)

khung

f_back

đối tượng khung bên ngoài tiếp theo (người gọi khung này)

f_builtins

không gian tên tích hợp được nhìn thấy bởi khung này

f_code

Đối tượng mã được thực thi trong khung này

f_globals

không gian tên toàn cầu được nhìn thấy bởi khung này

f_lasti

Chỉ mục hướng dẫn cố gắng cuối cùng trong mã byte

f_lineno

Số dòng hiện tại trong mã nguồn Python

f_locals

Đối tượng Traceback bên trong tiếp theo (được gọi bởi cấp độ này)

f_trace

khung

đối tượng khung bên ngoài tiếp theo (người gọi khung này)

co_argcount

không gian tên tích hợp được nhìn thấy bởi khung này

co_code

Đối tượng mã được thực thi trong khung này

co_cellvars

không gian tên toàn cầu được nhìn thấy bởi khung này

co_consts

không gian tên địa phương nhìn thấy bởi khung này

co_filename

Chức năng truy tìm cho khung này hoặc no___trans___pre___38

co_firstlineno

mã số

co_flags

Số lượng đối số (không bao gồm các đối số từ khóa, * hoặc ** args)here

co_lnotab

Chuỗi mã byte được biên dịch

co_freevars

Tuple của tên của các biến tế bào (được tham chiếu bởi phạm vi chứa)

co_posonlyargcount

Tuple của các hằng số được sử dụng trong mã byte

co_kwonlyargcount

Tên của tệp trong đó đối tượng mã này được tạo

co_name

Số dòng đầu tiên trong mã nguồn Python

co_names

Bitmap của NO___Trans___PRE___41 cờ, đọc thêm tại đây

co_nlocals

Ánh xạ được mã hóa các số dòng đến các chỉ số mã byte

co_stacksize

Tuple của tên của các biến miễn phí (được tham chiếu thông qua đóng chức năng đóng)

co_varnames

Số lượng đối số chỉ vị trí

Số lượng từ khóa chỉ đối số (không bao gồm ** arg)

__name__

Tên mà đối tượng mã này được xác định

__qualname__

Tuple của các tên khác ngoài đối số và chức năng của người dân địa phương

gi_frame

khung

gi_running

đối tượng khung bên ngoài tiếp theo (người gọi khung này)

gi_code

đối tượng khung bên ngoài tiếp theo (người gọi khung này)

gi_yieldfrom

không gian tên tích hợp được nhìn thấy bởi khung này

Đối tượng mã được thực thi trong khung này

__name__

Tên mà đối tượng mã này được xác định

__qualname__

Tuple của các tên khác ngoài đối số và chức năng của người dân địa phương

cr_await

Số lượng biến cục bộ

cr_frame

khung

cr_running

đối tượng khung bên ngoài tiếp theo (người gọi khung này)

cr_code

đối tượng khung bên ngoài tiếp theo (người gọi khung này)

cr_origin

không gian tên tích hợp được nhìn thấy bởi khung này

Đối tượng mã được thực thi trong khung này

__doc__

không gian tên toàn cầu được nhìn thấy bởi khung này

__name__

không gian tên địa phương nhìn thấy bởi khung này

__qualname__

Tuple của các tên khác ngoài đối số và chức năng của người dân địa phương

__self__

Số lượng biến cục bộ

Không gian ngăn xếp máy ảo yêu cầuAdd

Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;
8 and
Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;
9 attributes to generators.

Tuple của tên của các đối số và các biến cục bộ

máy phát điệnAdd

def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())
1 attribute to coroutines.

TênAdd

def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())
2 attribute to functions.

Tên đủ điều kiện(object[, predicate])

Là máy phát điện chạy?

đối tượng được lặp lại bởi no___trans___pre___42 hoặc no___trans___pre___38

Coroutine

đối tượng đang được chờ đợi, hoặc no___trans___pre___38(path)

Coroutine có đang chạy không?

trong đó coroutine được tạo ra, hoặc no___trans___pre___38. Xem

Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;
6

được xây dựng trongThe function is based directly on

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
4.

Chuỗi tài liệu(object)

Tên ban đầu của hàm hoặc phương pháp

ví dụ mà phương thức bị ràng buộc hoặc no___trans___pre___38(object)

Đã thay đổi trong phiên bản 3.5: Thêm NO___Trans___PRE___48 và NO___TRANS___PRE___49 thuộc tính vào máy phát điện.

Thuộc tính NO___Trans___Pre___50 của các trình tạo hiện được đặt từ tên hàm, thay vì tên mã và giờ đây nó có thể được sửa đổi.(object)

Đã thay đổi trong phiên bản 3.7: Thêm NO___TRANS___PRE___51 thuộc tính của Coroutines.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 75 (đối tượng) ¶(object)

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là hàm Python, bao gồm các hàm được tạo bởi biểu thức Lambda.lambda expression.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 78 (đối tượng) ¶(object)

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là hàm tạo Python.

Đã thay đổi trong phiên bản 3.8: Các chức năng được gói trong NO___TRANS___PRE___80 Bây giờ hãy trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu hàm được gói là hàm tạo Python.Functions wrapped in
>>> def test(a, b):
...     pass
>>> sig = signature(test)
>>> new_sig = sig.replace(return_annotation="new return anno")
>>> str(new_sig)
"(a, b) -> 'new return anno'"
0 now return
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 if the wrapped function is a Python generator function.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 83 (đối tượng) ¶(object)

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 nếu đối tượng là trình tạo.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 86 (đối tượng) ¶(object)

Trả về NO___TRANS___PRE___67 Nếu đối tượng là hàm coroutine (một hàm được xác định bằng cú pháp NO___TRANS___PRE___88).coroutine function (a function defined with an

>>> def test(a, b):
...     pass
>>> sig = signature(test)
>>> new_sig = sig.replace(return_annotation="new return anno")
>>> str(new_sig)
"(a, b) -> 'new return anno'"
8 syntax).

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 90 (đối tượng) ¶(object)

Trả về NO___TRANS___PRE___67 Nếu đối tượng là một coroutine được tạo bởi hàm no___trans___pre___88.coroutine created by an

>>> def test(a, b):
...     pass
>>> sig = signature(test)
>>> new_sig = sig.replace(return_annotation="new return anno")
>>> str(new_sig)
"(a, b) -> 'new return anno'"
8 function.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 90 (đối tượng) ¶(object)

Trả về NO___TRANS___PRE___67 Nếu đối tượng là một coroutine được tạo bởi hàm no___trans___pre___88.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 94 (đối tượng) ¶

def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 90 (đối tượng) ¶(object)

Trả về NO___TRANS___PRE___67 Nếu đối tượng là một coroutine được tạo bởi hàm no___trans___pre___88.asynchronous generator function, for example:

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 94 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng có thể được sử dụng trong biểu thức no___trans___pre___96.(object)

Cũng có thể được sử dụng để phân biệt các coroutin dựa trên máy phát điện với các trình tạo thông thường:asynchronous generator iterator created by an asynchronous generator function.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 94 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng có thể được sử dụng trong biểu thức no___trans___pre___96.(object)

Cũng có thể được sử dụng để phân biệt các coroutin dựa trên máy phát điện với các trình tạo thông thường:

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 98 (đối tượng) ¶(object)

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là hàm tạo không đồng bộ, ví dụ::

Mới trong phiên bản 3.6.(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 101 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là một trình lặp tạo không đồng bộ được tạo bởi một hàm tạo không đồng bộ.(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 104 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 nếu đối tượng là một dấu vết.(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 107 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 nếu đối tượng là một khung.(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 110 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 nếu đối tượng là mã.(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 113 (đối tượng) ¶

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là hàm tích hợp hoặc phương thức tích hợp ràng buộc.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 116 (đối tượng) ¶

Trả về
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là chức năng hoặc phương thức được định nghĩa bởi người dùng hoặc tích hợp.(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 119 (đối tượng) ¶

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 nếu đối tượng là một lớp cơ sở trừu tượng.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 122 (đối tượng) ¶(object)

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 nếu đối tượng là một mô tả phương thức, nhưng không phải nếu không có ___trans___pre___124, no___trans___pre___125, no___trans___pre___126 hoặc no___trans___pre___127 là sự thật.

Điều này, ví dụ, đúng với số ___trans___pre___128. Một đối tượng vượt qua thử nghiệm này có phương thức NO___Trans___PRE___129 nhưng không phải là phương thức NO___TRANS___PRE___130, nhưng ngoài ra đó là tập hợp các thuộc tính khác nhau. Một thuộc tính NO___TRANS___PRE___50 thường là hợp lý và thường là không. getsets are attributes defined in extension modules via

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
47 structures. For Python implementations without such types, this method will always return
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
33.

Các phương thức được thực hiện thông qua các mô tả cũng vượt qua một trong các thử nghiệm khác trả về NO___TRANS___PRE___133 từ thử nghiệm NO___TRANS___PRE___134, đơn giản là vì các thử nghiệm khác hứa hẹn nhiều hơn - bạn có thể, ví dụ, hãy tính vào không có(object)

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 138 (đối tượng) ¶

Trả về

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7 Nếu đối tượng là bộ mô tả dữ liệu. Member descriptors are attributes defined in extension modules via
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
52 structures. For Python implementations without such types, this method will always return
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
33.

Mô tả dữ liệu có NO___TRANS___PRE___140 hoặc phương thức NO___TRANS___PRE___141. Ví dụ là các thuộc tính (được xác định trong Python), getsets và thành viên. Hai cái sau được định nghĩa trong C và có nhiều thử nghiệm cụ thể hơn cho các loại đó, mạnh mẽ trong quá trình triển khai Python. Thông thường, các mô tả dữ liệu cũng sẽ có def gen(): yield @types.coroutine def gen_coro(): yield assert not isawaitable(gen()) assert isawaitable(gen_coro()) 0 và >>> def f(): ... a = 1 ... b = 2 ... >>> f.__code__.co_names () >>> f.__code__.co_varnames ('a', 'b') 32 thuộc tính (thuộc tính, getsets và thành viên có cả hai thuộc tính này), nhưng điều này không được đảm bảo.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 145 (đối tượng) ¶(object)

Nhận chuỗi tài liệu cho một đối tượng, được làm sạch bằng

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
56. Nếu chuỗi tài liệu cho một đối tượng không được cung cấp và đối tượng là một lớp, phương thức, thuộc tính hoặc bộ mô tả, hãy truy xuất chuỗi tài liệu từ hệ thống phân cấp kế thừa. Trả về
names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8 Nếu chuỗi tài liệu không hợp lệ hoặc bị thiếu.

Đã thay đổi trong phiên bản 3.5: Các chuỗi tài liệu hiện được kế thừa nếu không được ghi đè.Documentation strings are now inherited if not overridden.

Trả về trong một chuỗi duy nhất bất kỳ dòng nhận xét nào ngay trước mã nguồn đối tượng (đối với một lớp, hàm hoặc phương thức) hoặc ở đầu tệp nguồn Python (nếu đối tượng là mô -đun). Nếu mã nguồn đối tượng không có sẵn, hãy trả về

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8. Điều này có thể xảy ra nếu đối tượng đã được xác định trong C hoặc vỏ tương tác.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 160 (đối tượng) ¶(object)

Trả về tên của tệp (văn bản hoặc nhị phân) trong đó một đối tượng được xác định. Điều này sẽ thất bại với NO___Trans___Pre___161 nếu đối tượng là mô-đun, lớp hoặc chức năng tích hợp.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 163 (đối tượng) ¶(object)

Cố gắng đoán mô -đun nào một đối tượng được xác định. Trả về NO___TRANS___PRE___38 nếu không thể xác định được mô -đun.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 166 (đối tượng) ¶(object)

Trả về tên của tệp nguồn Python trong đó một đối tượng được xác định hoặc không có ___trans___pre___38 nếu không thể xác định được cách để lấy nguồn. Điều này sẽ thất bại với NO___Trans___Pre___161 nếu đối tượng là mô-đun, lớp hoặc chức năng tích hợp.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 170 (đối tượng) ¶(object)

Trả về một danh sách các dòng nguồn và số dòng bắt đầu cho một đối tượng. Đối số có thể là một mô -đun, lớp, phương thức, chức năng, tracback, khung hoặc đối tượng mã. Mã nguồn được trả về dưới dạng danh sách các dòng tương ứng với đối tượng và số dòng cho biết trong tệp nguồn gốc, dòng mã đầu tiên được tìm thấy. Một NO___Trans___Pre___171 được nâng lên nếu mã nguồn không thể được truy xuất.

Đã thay đổi trong phiên bản 3.3: no___trans___pre___171 được nâng lên thay vì no___trans___pre___173, bây giờ là bí danh của trước đây.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
71 is raised instead of
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
73, now an alias of the former.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 175 (đối tượng) ¶(object)

Trả về văn bản của mã nguồn cho một đối tượng. Đối số có thể là một mô -đun, lớp, phương thức, chức năng, tracback, khung hoặc đối tượng mã. Mã nguồn được trả về dưới dạng một chuỗi. Một NO___Trans___Pre___171 được nâng lên nếu mã nguồn không thể được truy xuất.

Đã thay đổi trong phiên bản 3.3: no___trans___pre___171 được nâng lên thay vì no___trans___pre___173, bây giờ là bí danh của trước đây.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
71 is raised instead of
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
73, now an alias of the former.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 175 (đối tượng) ¶(doc)

Trả về văn bản của mã nguồn cho một đối tượng. Đối số có thể là một mô -đun, lớp, phương thức, chức năng, tracback, khung hoặc đối tượng mã. Mã nguồn được trả về dưới dạng một chuỗi. Một NO___Trans___Pre___171 được nâng lên nếu mã nguồn không thể được truy xuất.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 180 (doc)

Làm sạch thụt vào từ các tài liệu được thụt vào để xếp hàng với các khối mã.

Tất cả khoảng trắng hàng đầu được loại bỏ khỏi dòng đầu tiên. Bất kỳ khoảng trắng nào có thể được loại bỏ đồng đều khỏi dòng thứ hai trở đi đều được loại bỏ. Các dòng trống ở đầu và cuối sau đó được loại bỏ. Ngoài ra, tất cả các tab được mở rộng đến không gian.

Các thiết bị gọi nội tâm với đối tượng chữ ký

Mới trong phiên bản 3.3.(callable, *, follow_wrapped=True, globals=None, locals=None, eval_str=False)

Đối tượng chữ ký đại diện cho chữ ký cuộc gọi của một đối tượng có thể gọi và chú thích trả về của nó. Để truy xuất một đối tượng chữ ký, hãy sử dụng hàm no___trans___pre___181.

>>> from inspect import signature
>>> def foo(a, *, b:int, **kwargs):
...     pass

>>> sig = signature(foo)

>>> str(sig)
'(a, *, b:int, **kwargs)'

>>> str(sig.parameters['b'])
'b:int'

>>> sig.parameters['b'].annotation

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 183 (có thể gọi được,

Trả về đối tượng NO___TRANS___PRE___184 cho NO___Trans___PRE___185 đã cho NO___Trans___PRE___185:

Chấp nhận một loạt các thiết bị gọi python, từ các hàm và lớp đơn giản đến số đối tượng no___trans___pre___80.

Đối với các đối tượng được xác định trong các mô-đun bằng cách sử dụng các chú thích được xâu chuỗi (no___trans___pre___187), no___trans___pre___181 sẽ cố gắng tự động hủy các chú thích bằng cách sử dụng NO___Trans___Pre___189. NO___TRANS___PRE___190, NO___TRANS___PRE___191 và NO___TRANS___PRE___192 Các tham số được chuyển vào NO___Trans___Pre___189 khi giải quyết các chú thích; Xem tài liệu để biết NO___Trans___Pre___189 để biết hướng dẫn về cách sử dụng các tham số này.the FAQ entry on positional-only parameters.

Tăng

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
95 nếu không có chữ ký nào có thể được cung cấp và NO___Trans___Pre___161 nếu loại đối tượng đó không được hỗ trợ. Ngoài ra, nếu các chú thích được xâu chuỗi và NO___Trans___Pre___192 không phải là sai, thì NO___Trans___Pre___198 gọi (các) cuộc gọi để không nối các chú thích có thể tăng bất kỳ loại ngoại lệ nào.
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
99 parameter. Pass
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
33 to get a signature of
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
85 specifically (
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
02 will not be used to unwrap decorated callables.)

Mới trong phiên bản 3.10: no___trans___pre___203, no___trans___pre___191 và no___trans___pre___192 tham số.

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
03,
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
91, and
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
92 parameters.

Ghi chú

Một số thiết bị gọi có thể không thể hướng nội trong một số triển khai nhất định của Python. Ví dụ, trong CPython, một số hàm tích hợp được xác định trong C không cung cấp siêu dữ liệu về các đối số của họ.

lớp no ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 207 (tham số = none, *, return_annotation = signature.empty) ¶(parameters=None, *, return_annotation=Signature.empty)

Một đối tượng chữ ký đại diện cho chữ ký cuộc gọi của một hàm và chú thích trả về của nó. Đối với mỗi tham số được chấp nhận bởi hàm, nó lưu trữ một đối tượng no___trans___pre___208 trong bộ sưu tập no___trans___pre___209 của nó.

Đối số tham số tùy chọn là một chuỗi của các đối tượng NO___Trans___PRE___208, được xác thực để kiểm tra xem không có tham số nào có tên trùng lặp và các tham số theo đúng thứ tự, tức là chỉ có vị trí, sau đó tham số với mặc định theo thông số mà không có mặc định.

Đối số hoàn trả tùy chọn_annotation, có thể là một đối tượng Python tùy ý, là chú thích của Return Return của người có thể gọi được.

Đối tượng chữ ký là bất biến. Sử dụng NO___Trans___Pre___211 để tạo một bản sao đã sửa đổi.

Thay đổi trong phiên bản 3.5: Đối tượng chữ ký có thể chọn và có thể băm.Signature objects are picklable and hashable.

Không ___ trans ___ pre ___ 212¶

Một điểm đánh dấu cấp độ đặc biệt để chỉ định sự vắng mặt của chú thích trả lại.

Không ___ trans ___ pre ___ 213¶

Một ánh xạ được đặt hàng của các tham số Tên tên của các tên tương ứng với các đối tượng NO___TRANS___PRE___208 tương ứng. Các tham số xuất hiện theo thứ tự định nghĩa nghiêm ngặt, bao gồm các tham số chỉ từ khóa.

Đã thay đổi trong phiên bản 3.7: Python chỉ đảm bảo rõ ràng rằng nó bảo tồn thứ tự khai báo của các tham số chỉ từ khóa kể từ phiên bản 3.7, mặc dù trong thực tế, thứ tự này luôn được bảo tồn trong Python 3.Python only explicitly guaranteed that it preserved the declaration order of keyword-only parameters as of version 3.7, although in practice this order had always been preserved in Python 3.

Không ___ trans ___ pre ___ 215¶

Các chú thích của Return Return cho người được gọi. Nếu có thể gọi được không có chú thích trả về trên mạng, thuộc tính này được đặt thành

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
16.

Không ___ trans ___ pre ___ 217 (*args, ** kwargs) ¶(*args, **kwargs)

Tạo một ánh xạ từ các đối số từ khóa và vị trí đến các tham số. Trả về

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
18 nếu NO___TRANS___PRE___219 và NO___TRANS___PRE___220 khớp với chữ ký, hoặc tăng số NO___Trans___Pre___161.

Không ___ trans ___ pre ___ 222 (*args, ** kwargs) ¶(*args, **kwargs)

Hoạt động tương tự như NO___Trans___Pre___223, nhưng cho phép bỏ qua một số đối số cần thiết (bắt chước NO___TRANS___PRE___80.

Không ___ trans ___ pre ___ 227 (*[, tham số] [, return_annotation]) ¶(*[, parameters][, return_annotation])

Tạo một thể hiện chữ ký mới dựa trên phiên bản thay thế đã được gọi trên. Có thể vượt qua các số khác nhau NO___TRANS___PRE___209 và/hoặc NO___TRANS___PRE___229 để ghi đè các thuộc tính tương ứng của chữ ký cơ sở. Để xóa return_annotation khỏi chữ ký được sao chép, hãy chuyển trong no___trans___pre___216.

No___trans___pre___8 classMethod no ___ trans ___ pre ___ 231 (obj, *, theo dõi_wrapped = true, globalns = none, localns = none) ¶(obj, *, follow_wrapped=True, globalns=None, localns=None)

Trả về một đối tượng NO___TRANS___PRE___184 (hoặc lớp con của nó) cho một cuộc gọi có thể gọi NO___TRANS___PRE___233. Vượt qua NO___Trans___PRE___234 để có được chữ ký của NO___TRANS___PRE___233 mà không mở chuỗi NO___TRANS___PRE___236 của nó.

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
37 và NO___Trans___Pre___238 sẽ được sử dụng làm không gian tên khi giải quyết các chú thích.

Phương pháp này đơn giản hóa lớp con của NO___Trans___PRE___184:

class MySignature(Signature):
    pass
sig = MySignature.from_callable(min)
assert isinstance(sig, MySignature)

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

Mới trong phiên bản 3.10: NO___Trans___PRE___237 và NO___TRANS___PRE___238 Tham số.

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
37 and
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
38 parameters.

Lớp không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 243 (tên, loại, *, mặc định = tham số.empty, chú thích = tham số.empty) ¶(name, kind, *, default=Parameter.empty, annotation=Parameter.empty)

Các đối tượng tham số là bất biến. Thay vì sửa đổi một đối tượng tham số, bạn có thể sử dụng NO___Trans___PRE___244 để tạo một bản sao sửa đổi.

Thay đổi trong phiên bản 3.5: Đối tượng tham số có thể chọn và có thể băm.Parameter objects are picklable and hashable.

Không ___ trans ___ pre ___ 212¶

Một điểm đánh dấu cấp độ đặc biệt để chỉ định sự vắng mặt của chú thích trả lại.

Không ___ trans ___ pre ___ 213¶

Một ánh xạ được đặt hàng của các tham số Tên tên của các tên tương ứng với các đối tượng NO___TRANS___PRE___208 tương ứng. Các tham số xuất hiện theo thứ tự định nghĩa nghiêm ngặt, bao gồm các tham số chỉ từ khóa.

Đã thay đổi trong phiên bản 3.7: Python chỉ đảm bảo rõ ràng rằng nó bảo tồn thứ tự khai báo của các tham số chỉ từ khóa kể từ phiên bản 3.7, mặc dù trong thực tế, thứ tự này luôn được bảo tồn trong Python 3. CPython generates implicit parameter names of the form

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
47 on the code objects used to implement comprehensions and generator expressions.

Không ___ trans ___ pre ___ 215¶These parameter names are exposed by this module as names like

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
48.

Các chú thích của Return Return cho người được gọi. Nếu có thể gọi được không có chú thích trả về trên mạng, thuộc tính này được đặt thành
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
16.

Không ___ trans ___ pre ___ 217 (*args, ** kwargs) ¶

Tạo một ánh xạ từ các đối số từ khóa và vị trí đến các tham số. Trả về
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
18 nếu NO___TRANS___PRE___219 và NO___TRANS___PRE___220 khớp với chữ ký, hoặc tăng số NO___Trans___Pre___161.

Không ___ trans ___ pre ___ 222 (*args, ** kwargs) ¶

Không ___ trans ___ pre ___ 253¶

Mô tả cách các giá trị đối số bị ràng buộc với tham số. Các giá trị có thể có (có thể truy cập qua NO___Trans___Pre___208, như NO___Trans___PRE___255):

Tên

Nghĩa

POSITIONAL_ONLY

Giá trị phải được cung cấp như một đối số vị trí. Các tham số chỉ vị trí là các tham số xuất hiện trước mục nhập số NO___Trans___PRE___256 (nếu có) trong định nghĩa hàm Python.

POSITIONAL_OR_KEYWORD

Giá trị có thể được cung cấp dưới dạng từ khóa hoặc đối số vị trí (đây là hành vi ràng buộc tiêu chuẩn cho các chức năng được thực hiện trong Python.)

VAR_POSITIONAL

Một bộ phận của các đối số vị trí mà aren liên kết với bất kỳ tham số nào khác. Điều này tương ứng với tham số no___trans___pre___219 trong định nghĩa hàm python.

KEYWORD_ONLY

Giá trị phải được cung cấp như một đối số từ khóa. Các tham số chỉ từ khóa là các tham số xuất hiện sau NO___Trans___PRE___258 hoặc NO___TRANS___PRE___219 trong định nghĩa chức năng Python.

VAR_KEYWORD

Một lệnh của các đối số từ khóa mà aren ràng buộc với bất kỳ tham số nào khác. Điều này tương ứng với tham số no___trans___pre___220 trong định nghĩa hàm python.

Ví dụ: In tất cả các đối số chỉ có từ khóa mà không có giá trị mặc định:

No___trans___pre___10 no ___ trans ___ pre ___ 261no ___ trans ___ pre ___ 262¶

Mô tả một giá trị enum của tham số.kind.

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

Ví dụ: In tất cả các mô tả về các đối số:

No___trans___pre___11 no ___ trans ___ pre ___ 227 (*[, tên] [, loại] [, mặc định] [, chú thích]) ¶(*[, name][, kind][, default][, annotation])

Tạo một thể hiện tham số mới dựa trên thể hiện được thay thế đã được gọi trên. Để ghi đè thuộc tính NO___TRANS___PRE___208, hãy chuyển đối số tương ứng. Để xóa giá trị mặc định hoặc/và chú thích khỏi tham số, hãy chuyển số ___trans___pre___250.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
2

Đã thay đổi trong phiên bản 3.4: Trong Python 3.3 Các đối tượng tham số được phép có NO___TRANS___PRE___266 được đặt thành NO___Trans___Pre___38 nếu NO___Trans___Pre___268 của họ được đặt thành NO___Trans___Pre___269. Điều này không còn được phép.In Python 3.3 Parameter objects were allowed to have

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
66 set to
names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8 if their
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
68 was set to
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
69. This is no longer permitted.

Lớp số ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 271¶

Kết quả của NO___Trans___Pre___223 hoặc NO___Trans___Pre___273 Gọi. Giữ ánh xạ các đối số đến các tham số chức năng.

Không ___ trans ___ pre ___ 274¶

Một ánh xạ có thể thay đổi của các tham số tên của các tham số đến các giá trị đối số. Chỉ chứa các đối số ràng buộc rõ ràng. Các thay đổi trong NO___Trans___Pre___275 sẽ phản ánh trong no___trans___pre___276 và NO___Trans___Pre___277.

Nên được sử dụng cùng với NO___Trans___Pre___278 cho bất kỳ mục đích xử lý đối số nào.

Không ___ trans ___ pre ___ 279¶

Một bộ phận của các giá trị đối số vị trí. Được tính toán động từ thuộc tính NO___TRANS___PRE___275.

Không ___ trans ___ pre ___ 281¶

Một chỉ đạo của các giá trị từ khóa đối số. Được tính toán động từ thuộc tính NO___TRANS___PRE___275.

Không ___ trans ___ pre ___ 183¶

Một tham chiếu đến cha mẹ số ___trans___pre___184 đối tượng.

Không ___ trans ___ pre ___ 285 ()()

Đặt các giá trị mặc định cho các đối số bị thiếu.

Đối với các đối số định vị biến (no___trans___pre___219) Mặc định là một bộ gốc trống.

Đối với các đối số Key-keyable (no___trans___pre___220), mặc định là một phương pháp trống.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
3

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

NO___TRANS___PRE___276 và NO___Trans___PRE___277 có thể được sử dụng để gọi các chức năng:

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
4

Xem thêm

PEP 362 - Đối tượng chữ ký chức năng. - Function Signature Object.

Các đặc điểm kỹ thuật chi tiết, chi tiết thực hiện và ví dụ.

Các lớp học và chức năng

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 291 (lớp, độc đáo = sai) ¶(classes, unique=False)

Sắp xếp danh sách các lớp đã cho vào một hệ thống phân cấp danh sách lồng nhau. Khi một danh sách lồng nhau xuất hiện, nó chứa các lớp có nguồn gốc từ lớp có mục nhập ngay trước danh sách. Mỗi mục là 2-tuple chứa một lớp và một bộ của các lớp cơ sở của nó. Nếu đối số duy nhất là đúng, chính xác một mục xuất hiện trong cấu trúc được trả về cho mỗi lớp trong danh sách đã cho. Mặt khác, các lớp sử dụng nhiều kế thừa và con cháu của họ sẽ xuất hiện nhiều lần.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 293 (func) ¶(func)

Nhận tên và giá trị mặc định của các tham số chức năng Python. Một tuple có tên NO___TRANS___PRE___294 được trả về. Args là danh sách các tên tham số. Varargs và từ khóa là tên của NO___TRANS___PRE___258 và NO___TRANS___PRE___296 tham số hoặc no___trans___pre___38. Mặc định là một bộ của các giá trị đối số mặc định hoặc no___trans___pre___38 nếu không có đối số mặc định; Nếu tuple này có n phần tử, chúng tương ứng với n phần tử cuối cùng được liệt kê trong args.named tuple

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
94 is returned. args is a list of the parameter names. varargs and keywords are the names of the
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
58 and
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
96 parameters or
names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8. defaults is a tuple of default argument values or
names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8 if there are no default arguments; if this tuple has n elements, they correspond to the last n elements listed in args.

Đã không dùng nữa vì phiên bản 3.0: Sử dụng NO___Trans___PRE___299 cho API được cập nhật thường là thay thế thả vào, nhưng cũng xử lý chính xác các chú thích chức năng và các tham số chỉ từ khóa.Use

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
99 for an updated API that is usually a drop-in replacement, but also correctly handles function annotations and keyword-only parameters.

Ngoài ra, sử dụng NO___Trans___Pre___181 và đối tượng chữ ký, cung cấp API nội tâm có cấu trúc hơn cho các thiết bị gọi.Signature Object, which provide a more structured introspection API for callables.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 302 (func) ¶(func)

Nhận tên và giá trị mặc định của các tham số chức năng Python. Một tuple có tên được trả về:named tuple is returned:

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
03

Args là danh sách các tên tham số vị trí. Varargs là tên của tham số no___trans___pre___258 hoặc NO___Trans___Pre___38 nếu các đối số vị trí tùy ý không được chấp nhận. VARKW là tên của tham số no___trans___pre___296 hoặc NO___Trans___PRE___38 nếu các đối số từ khóa tùy ý không được chấp nhận. Mặc định là một bộ N của các giá trị đối số mặc định tương ứng với n tham số vị trí cuối cùng hoặc NO___Trans___Pre___38 nếu không có mặc định được xác định. KwonlyArss là danh sách các tên tham số chỉ từ khóa theo thứ tự khai báo. KwonlyDefaults là một tên tham số ánh xạ từ điển từ kwonlyargs đến các giá trị mặc định được sử dụng nếu không có đối số nào được cung cấp. Chú thích là một tên tham số ánh xạ từ điển để chú thích. Khóa đặc biệt NO___Trans___Pre___39 được sử dụng để báo cáo chú thích giá trị trả về hàm (nếu có).

Lưu ý rằng NO___Trans___Pre___181 và đối tượng chữ ký cung cấp API được đề xuất cho hướng nội có thể gọi được và hỗ trợ các hành vi bổ sung (như đối số chỉ có vị trí) đôi khi gặp trong API mô-đun mở rộng. Hàm này được giữ lại chủ yếu để sử dụng trong mã cần duy trì khả năng tương thích với API mô -đun Python 2 no___Trans___Pre___35.Signature Object provide the recommended API for callable introspection, and support additional behaviours (like positional-only arguments) that are sometimes encountered in extension module APIs. This function is retained primarily for use in code that needs to maintain compatibility with the Python 2

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
5 module API.

Đã thay đổi trong phiên bản 3.4: Hàm này hiện dựa trên NO___TRANS___PRE___181, nhưng vẫn bỏ qua các thuộc tính NO___TRANS___PRE___236 và bao gồm tham số đầu tiên đã bị ràng buộc trong đầu ra chữ ký cho các phương thức bị ràng buộc.This function is now based on

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
81, but still ignores
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
36 attributes and includes the already bound first parameter in the signature output for bound methods.

Đã thay đổi trong phiên bản 3.6: Phương pháp này trước đây đã được ghi nhận là không ủng hộ NO___Trans___PRE___181 trong Python 3.5, nhưng quyết định đó đã được đảo ngược để khôi phục giao diện tiêu chuẩn được hỗ trợ rõ ràng cho mã Python 2/3 của SOURCE API.This method was previously documented as deprecated in favour of

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
81 in Python 3.5, but that decision has been reversed in order to restore a clearly supported standard interface for single-source Python 2/3 code migrating away from the legacy
names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
15 API.

Đã thay đổi trong phiên bản 3.7: Python chỉ đảm bảo rõ ràng rằng nó bảo tồn thứ tự khai báo của các tham số chỉ từ khóa kể từ phiên bản 3.7, mặc dù trong thực tế, thứ tự này luôn được bảo tồn trong Python 3.Python only explicitly guaranteed that it preserved the declaration order of keyword-only parameters as of version 3.7, although in practice this order had always been preserved in Python 3.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 317 (khung)(frame)

Nhận thông tin về các đối số được truyền vào một khung cụ thể. Một tuple có tên NO___TRANS___PRE___318 được trả về. Args là một danh sách các tên đối số. Varargs và từ khóa là tên của NO___TRANS___PRE___258 và NO___TRANS___PRE___296 đối số hoặc no___trans___pre___38. Người dân địa phương là từ điển địa phương của khung đã cho.named tuple

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
18 is returned. args is a list of the argument names. varargs and keywords are the names of the
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
58 and
PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
96 arguments or
names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8. locals is the locals dictionary of the given frame.

Ghi chú

Chức năng này đã vô tình được đánh dấu là không dùng nữa trong Python 3.5.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 323 (args [, varargs, varkw, mặc định, kwonlyargs, kwonlydefaults, chú thích [, định dạng, định dạng(args[, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations[, formatarg, formatvarargs, formatvarkw, formatvalue, formatreturns, formatannotations]])

Định dạng một thông số đối số đẹp từ các giá trị được trả về bởi no___trans___pre___299.

Bảy đối số đầu tiên là (no___trans___pre___276, no___trans___pre___326, no___trans___pre___327, no___trans___pre___328, no___trans___pre___329, no.

Sáu đối số khác là các hàm được gọi để biến tên đối số, NO___Trans___PRE___258 Tên đối số, NO___Trans___PRE___296 Tên đối số, giá trị mặc định, chú thích trả về và chú thích riêng lẻ thành các chuỗi, tương ứng.

Ví dụ:

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
5

Không dùng nữa kể từ phiên bản 3.5: Sử dụng NO___Trans___PRE___181 và đối tượng chữ ký, cung cấp API hướng nội tốt hơn cho các thiết bị gọi.Use

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
81 and Signature Object, which provide a better introspecting API for callables.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 336 (args [, varargs, varkw, người dân địa phương, định dạng, định dạng, định dạng, định dạng, định dạng])(args[, varargs, varkw, locals, formatarg, formatvarargs, formatvarkw, formatvalue])

Định dạng một thông số đối số đẹp từ bốn giá trị được trả về bởi no___trans___pre___337. Các đối số định dạng* là các hàm định dạng tùy chọn tương ứng được gọi để biến tên và giá trị thành chuỗi.

Ghi chú

Chức năng này đã vô tình được đánh dấu là không dùng nữa trong Python 3.5.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 323 (args [, varargs, varkw, mặc định, kwonlyargs, kwonlydefaults, chú thích [, định dạng, định dạng(cls)

Định dạng một thông số đối số đẹp từ các giá trị được trả về bởi no___trans___pre___299.

Bảy đối số đầu tiên là (no___trans___pre___276, no___trans___pre___326, no___trans___pre___327, no___trans___pre___328, no___trans___pre___329, no.(func, /, *args, **kwds)

Sáu đối số khác là các hàm được gọi để biến tên đối số, NO___Trans___PRE___258 Tên đối số, NO___Trans___PRE___296 Tên đối số, giá trị mặc định, chú thích trả về và chú thích riêng lẻ thành các chuỗi, tương ứng.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
6

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 347 (func) ¶(func)

Nhận ánh xạ các tham chiếu tên bên ngoài trong hàm Python hoặc Phương thức Func cho các giá trị hiện tại của chúng. Một tuple có tên NO___TRANS___PRE___348 được trả về. Các bản đồ không thuộc địa điểm được tham chiếu tên cho các biến đóng từ vựng, toàn cầu cho chức năng mô -đun toàn cầu và tích hợp các bản tích hợp có thể nhìn thấy từ cơ thể chức năng. Không ràng buộc là tập hợp các tên được tham chiếu trong hàm không thể được giải quyết ở tất cả các mô -đun hiện tại Globals và Buildins.named tuple

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
48 is returned. nonlocals maps referenced names to lexical closure variables, globals to the function’s module globals and builtins to the builtins visible from the function body. unbound is the set of names referenced in the function that could not be resolved at all given the current module globals and builtins.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
61 được nâng lên nếu func không phải là hàm hoặc phương thức python.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 351 (func, *, stop = none) ¶(func, *, stop=None)

Nhận đối tượng được bọc bởi func. Nó theo chuỗi các thuộc tính NO___TRANS___PRE___236 Trả về đối tượng cuối cùng trong chuỗi.

Dừng là một cuộc gọi lại tùy chọn chấp nhận một đối tượng trong chuỗi trình bao bọc vì đối số duy nhất của nó cho phép bỏ lại việc bỏ qua sớm nếu cuộc gọi lại trả về giá trị thực. Nếu cuộc gọi lại không bao giờ trả về một giá trị thực, đối tượng cuối cùng trong chuỗi được trả về như bình thường. Ví dụ: NO___Trans___PRE___181 sử dụng điều này để dừng việc hủy bỏ nếu bất kỳ đối tượng nào trong chuỗi có thuộc tính NO___TRANS___PRE___354 được xác định.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
95 được nâng lên nếu gặp phải một chu kỳ.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 357 (obj, *, globals = none, locals = none, eval_str = false)(obj, *, globals=None, locals=None, eval_str=False)

Tính toán các chú thích Dict cho một đối tượng.

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
33 có thể là một lớp học, lớp hoặc mô -đun có thể gọi được. Vượt qua trong một đối tượng của bất kỳ loại nào khác đều tăng số ___trans___pre___161.

Trả lại một dict.

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
60 trả về một lệnh mới mỗi khi nó được gọi; Gọi nó hai lần trên cùng một đối tượng sẽ trả về hai dicts khác nhau nhưng tương đương.

Chức năng này xử lý một số chi tiết cho bạn:

  • Nếu NO___Trans___Pre___192 là đúng, các giá trị của loại NO___Trans___PRE___362 sẽ không được thực hiện bằng cách sử dụng NO___Trans___Pre___198. Điều này được dự định để sử dụng với các chú thích được xâu chuỗi (no___trans___pre___187).

  • Nếu

    PyObject *u_names;     /* all names */
    PyObject *u_varnames; /* local variables */
    
    33 không có một chú thích, hãy trả về một dictar trống. .

  • Bỏ qua các chú thích được thừa hưởng trên các lớp học. Nếu một lớp học không có chú thích riêng của mình ra lệnh, hãy trả lại một dict trống.

  • Tất cả các quyền truy cập cho các thành viên đối tượng và các giá trị dict được thực hiện bằng NO___Trans___PRE___366 và NO___TRANS___PRE___367 để an toàn.

  • Luôn luôn, luôn luôn, luôn luôn trả lại một dict mới được tạo ra.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
92 có kiểm soát xem các giá trị của loại NO___Trans___PRE___362 có được thay thế bằng kết quả của việc gọi NO___Trans___Pre___198 trên các giá trị đó:

  • Nếu eval_str là đúng, no___trans___pre___198 được gọi là các giá trị của loại NO___Trans___Pre___362. .

  • Nếu eval_str là sai (mặc định), các giá trị của loại no___trans___pre___362 không thay đổi.

NO___Trans___PRE___203 và NO___TRANS___PRE___191 được truyền vào NO___TRANS___PRE___198; Xem tài liệu để biết NO___Trans___Pre___198 để biết thêm thông tin. Nếu

PyObject *u_names;     /* all names */
PyObject *u_varnames; /* local variables */
03 hoặc NO___Trans___Pre___191 là NO___TRANS___PRE___38, hàm này có thể thay thế giá trị đó bằng mặc định cụ thể theo ngữ cảnh, phụ thuộc vào NO___Trans___Pre___384:

  • Nếu NO___Trans___Pre___233 là một mô -đun, NO___Trans___Pre___203 mặc định là no___trans___pre___387.

  • Nếu

    PyObject *u_names;     /* all names */
    PyObject *u_varnames; /* local variables */
    
    33 là một lớp, NO___Trans___Pre___203 mặc định là NO___TRANS___PRE___390 và NO___TRANS___PRE___191 mặc định là NO___Trans___Pre___233.

  • Nếu

    PyObject *u_names;     /* all names */
    PyObject *u_varnames; /* local variables */
    
    33 là một người có thể gọi được, NO___Trans___Pre___203 mặc định là NO___TRANS___PRE___395, mặc dù nếu NO___Trans___Pre___233 là một hàm được gói (sử dụng NO___Trans___Pre___397).

Gọi

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
73 là cách thực hành tốt nhất để truy cập vào các chú thích của bất kỳ đối tượng nào. Xem chú thích thực tiễn tốt nhất để biết thêm thông tin về các chú thích thực hành tốt nhất.Annotations Best Practices for more information on annotations best practices.

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

Người phiên dịch ngăn xếp

Khi các chức năng sau, trả về các bản ghi khung hình, mỗi bản ghi có tên là Tuple no___Trans___Pre___399. Bộ tuple chứa đối tượng khung, tên tệp, số dòng của dòng hiện tại, tên hàm, danh sách các dòng ngữ cảnh từ mã nguồn và chỉ mục của dòng hiện tại trong danh sách đó.named tuple

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
99. The tuple contains the frame object, the filename, the line number of the current line, the function name, a list of lines of context from the source code, and the index of the current line within that list.

Đã thay đổi trong phiên bản 3.5: Trả về một tuple có tên thay vì một tuple.Return a named tuple instead of a tuple.

Ghi chú

Giữ các tham chiếu đến các đối tượng khung, như được tìm thấy trong phần tử đầu tiên của khung ghi lại các chức năng này, có thể khiến chương trình của bạn tạo các chu kỳ tham chiếu. Khi một chu kỳ tham chiếu đã được tạo, tuổi thọ của tất cả các đối tượng có thể được truy cập từ các đối tượng tạo thành chu kỳ có thể trở nên dài hơn ngay cả khi máy dò chu kỳ tùy chọn Python tựa được bật. Nếu các chu kỳ như vậy phải được tạo ra, điều quan trọng là đảm bảo chúng bị phá vỡ rõ ràng để tránh sự phá hủy chậm trễ của các vật thể và tăng mức tiêu thụ bộ nhớ xảy ra.

Mặc dù máy dò chu kỳ sẽ bắt được chúng, việc phá hủy các khung (và các biến cục bộ) có thể được thực hiện xác định bằng cách loại bỏ chu kỳ trong điều khoản NO___Trans___PRE___400. Điều này cũng rất quan trọng nếu máy dò chu kỳ bị vô hiệu hóa khi Python được biên dịch hoặc sử dụng NO___Trans___Pre___401. Ví dụ:

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
7

Nếu bạn muốn giữ khung hình xung quanh (ví dụ: để in dấu vết sau), bạn cũng có thể phá vỡ các chu kỳ tham chiếu bằng cách sử dụng phương thức NO___Trans___PRE___402.

Đối số ngữ cảnh tùy chọn được hỗ trợ bởi hầu hết các chức năng này chỉ định số lượng dòng ngữ cảnh để quay lại, được tập trung xung quanh dòng hiện tại.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 404 (khung, bối cảnh = 1) ¶(frame, context=1)

Nhận thông tin về một khung hoặc đối tượng theo dõi. Một tuple có tên NO___TRANS___PRE___405 được trả về.named tuple

Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;
05 is returned.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 407 (khung, bối cảnh = 1) ¶(frame, context=1)

Nhận danh sách các bản ghi khung cho khung và tất cả các khung bên ngoài. Các khung này đại diện cho các cuộc gọi dẫn đến việc tạo ra khung hình. Mục đầu tiên trong danh sách trả về đại diện cho khung; Mục cuối cùng đại diện cho cuộc gọi ngoài cùng trên ngăn xếp khung hình.

Đã thay đổi trong phiên bản 3.5: Danh sách các bộ dữ liệu có tên NO___TRANS___PRE___399 được trả về.A list of named tuples

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
99 is returned.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 410 (tracback, bối cảnh = 1) ¶(traceback, context=1)

Nhận một danh sách các bản ghi khung cho khung Traceback và tất cả các khung bên trong. Các khung này đại diện cho các cuộc gọi được thực hiện là kết quả của khung. Mục đầu tiên trong danh sách đại diện cho TraceBack; Mục cuối cùng đại diện cho nơi ngoại lệ được nâng lên.

Đã thay đổi trong phiên bản 3.5: Danh sách các bộ dữ liệu có tên NO___TRANS___PRE___399 được trả về.A list of named tuples

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
99 is returned.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 410 (tracback, bối cảnh = 1) ¶()

Nhận một danh sách các bản ghi khung cho khung Traceback và tất cả các khung bên trong. Các khung này đại diện cho các cuộc gọi được thực hiện là kết quả của khung. Mục đầu tiên trong danh sách đại diện cho TraceBack; Mục cuối cùng đại diện cho nơi ngoại lệ được nâng lên.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 413 () This function relies on Python stack frame support in the interpreter, which isn’t guaranteed to exist in all implementations of Python. If running in an implementation without Python stack frame support this function returns

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
8.

Trả về đối tượng khung cho khung ngăn xếp người gọi.(context=1)

Chi tiết triển khai CPYThon: Hàm này dựa vào hỗ trợ khung ngăn xếp Python trong trình thông dịch, được đảm bảo tồn tại trong tất cả các triển khai của Python. Nếu chạy trong một triển khai mà không có khung ngăn xếp Python, hỗ trợ chức năng này sẽ trả về no___trans___pre___38.

Đã thay đổi trong phiên bản 3.5: Danh sách các bộ dữ liệu có tên NO___TRANS___PRE___399 được trả về.A list of named tuples

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
99 is returned.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 410 (tracback, bối cảnh = 1) ¶(context=1)

Nhận một danh sách các bản ghi khung cho khung Traceback và tất cả các khung bên trong. Các khung này đại diện cho các cuộc gọi được thực hiện là kết quả của khung. Mục đầu tiên trong danh sách đại diện cho TraceBack; Mục cuối cùng đại diện cho nơi ngoại lệ được nâng lên.

Đã thay đổi trong phiên bản 3.5: Danh sách các bộ dữ liệu có tên NO___TRANS___PRE___399 được trả về.A list of named tuples

names = dict_keys_inorder(c->u->u_names, 0);
varnames = dict_keys_inorder(c->u->u_varnames, 0);

...

co = PyCode_New(..., names, varnames, ... );
99 is returned.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 410 (tracback, bối cảnh = 1) ¶

Nhận một danh sách các bản ghi khung cho khung Traceback và tất cả các khung bên trong. Các khung này đại diện cho các cuộc gọi được thực hiện là kết quả của khung. Mục đầu tiên trong danh sách đại diện cho TraceBack; Mục cuối cùng đại diện cho nơi ngoại lệ được nâng lên.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 413 ()

Trả về đối tượng khung cho khung ngăn xếp người gọi.(obj, attr, default=None)

Chi tiết triển khai CPYThon: Hàm này dựa vào hỗ trợ khung ngăn xếp Python trong trình thông dịch, được đảm bảo tồn tại trong tất cả các triển khai của Python. Nếu chạy trong một triển khai mà không có khung ngăn xếp Python, hỗ trợ chức năng này sẽ trả về no___trans___pre___38.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 416 (bối cảnh = 1) ¶

Trả về một danh sách các bản ghi khung cho ngăn xếp người gọi. Mục đầu tiên trong danh sách trả về đại diện cho người gọi; Mục cuối cùng đại diện cho cuộc gọi ngoài cùng trên ngăn xếp.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 419 (bối cảnh = 1) ¶

Trả về một danh sách các bản ghi khung cho ngăn xếp giữa khung hiện tại và khung trong đó một ngoại lệ hiện đang được xử lý đã được đưa vào. Mục đầu tiên trong danh sách đại diện cho người gọi; Mục cuối cùng đại diện cho nơi ngoại lệ được nâng lên.

Tìm nạp các thuộc tính Statorment¶

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
8

Cả names = dict_keys_inorder(c->u->u_names, 0); varnames = dict_keys_inorder(c->u->u_varnames, 0); ... co = PyCode_New(..., names, varnames, ... ); 66 và NO___Trans___Pre___422 có thể kích hoạt thực thi mã khi tìm nạp hoặc kiểm tra sự tồn tại của các thuộc tính. Các mô tả, giống như các thuộc tính, sẽ được gọi và NO___TRANS___PRE___423 và NO___TRANS___PRE___424 có thể được gọi.

Đối với các trường hợp bạn muốn nội tâm thụ động, như các công cụ tài liệu, điều này có thể bất tiện. NO___Trans___Pre___425 có chữ ký giống như no___trans___pre___366 nhưng tránh thực thi mã khi lấy các thuộc tính.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 435 (máy phát) ¶(generator)

Nhận trạng thái hiện tại của một thiết bị máy phát điện.

Trạng thái có thể là:
  • Gen_created: Chờ bắt đầu thực thi.

  • GEN_RUNCY: Hiện đang được thực hiện bởi thông dịch viên.

  • GEN_SUSPENDS: Hiện đang bị treo ở biểu thức năng suất.

  • Gen_closes: Thực thi đã hoàn thành.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 437 (coroutine) ¶(coroutine)

Nhận trạng thái hiện tại của một đối tượng Coroutine. Hàm được dự định sẽ được sử dụng với các đối tượng coroutine được tạo bởi các hàm no___trans___pre___88, nhưng sẽ chấp nhận bất kỳ đối tượng giống như coroutine nào có các thuộc tính

Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;
39 và
Py_INCREF(names);
co->co_names = names;
Py_INCREF(varnames);
co->co_varnames = varnames;
40.

Trạng thái có thể là:
  • Coro_Created: Chờ bắt đầu thực thi.

  • Coro_rasty: Hiện đang được thực hiện bởi thông dịch viên.

  • Coro_suspends: Hiện đang bị đình chỉ tại một biểu hiện đang chờ đợi.

  • Coro_closes: Thực thi đã hoàn thành.

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

Trạng thái bên trong hiện tại của máy phát cũng có thể được truy vấn. Điều này chủ yếu là hữu ích cho mục đích thử nghiệm, để đảm bảo rằng trạng thái nội bộ được cập nhật như mong đợi:

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 442 (máy phát) ¶(generator)

Nhận ánh xạ của các biến cục bộ trực tiếp trong Trình tạo đến các giá trị hiện tại của chúng. Một từ điển được trả về các bản đồ từ tên biến sang các giá trị. Đây là tương đương với việc gọi NO___Trans___Pre___443 trong phần thân của máy phát điện và tất cả các cảnh báo tương tự được áp dụng.

Nếu Trình tạo là một trình tạo không có khung hiện tại, thì một từ điển trống được trả về.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
61 được nâng lên nếu Trình tạo không phải là đối tượng máy phát Python.generator with no currently associated frame, then an empty dictionary is returned.
>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
61 is raised if generator is not a Python generator object.

Chi tiết triển khai CPYThon: Hàm này dựa vào trình tạo lộ ra khung ngăn xếp Python cho hướng nội, điều này được đảm bảo là trường hợp trong tất cả các triển khai của Python. Trong những trường hợp như vậy, chức năng này sẽ luôn trả về một từ điển trống. This function relies on the generator exposing a Python stack frame for introspection, which isn’t guaranteed to be the case in all implementations of Python. In such cases, this function will always return an empty dictionary.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 446 (coroutine) ¶(coroutine)

Hàm này tương tự như no___trans___pre___447, nhưng hoạt động cho các đối tượng coroutine được tạo bởi các hàm no___trans___pre___88.

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

Trạng thái bên trong hiện tại của máy phát cũng có thể được truy vấn. Điều này chủ yếu là hữu ích cho mục đích thử nghiệm, để đảm bảo rằng trạng thái nội bộ được cập nhật như mong đợi:

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 442 (máy phát) ¶

Nhận ánh xạ của các biến cục bộ trực tiếp trong Trình tạo đến các giá trị hiện tại của chúng. Một từ điển được trả về các bản đồ từ tên biến sang các giá trị. Đây là tương đương với việc gọi NO___Trans___Pre___443 trong phần thân của máy phát điện và tất cả các cảnh báo tương tự được áp dụng.

Nếu Trình tạo là một trình tạo không có khung hiện tại, thì một từ điển trống được trả về.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
61 được nâng lên nếu Trình tạo không phải là đối tượng máy phát Python.

Chi tiết triển khai CPYThon: Hàm này dựa vào trình tạo lộ ra khung ngăn xếp Python cho hướng nội, điều này được đảm bảo là trường hợp trong tất cả các triển khai của Python. Trong những trường hợp như vậy, chức năng này sẽ luôn trả về một từ điển trống.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 446 (coroutine) ¶

Hàm này tương tự như no___trans___pre___447, nhưng hoạt động cho các đối tượng coroutine được tạo bởi các hàm no___trans___pre___88.

Mã đối tượng Bit Flags¶

Các đối tượng mã Python có thuộc tính NO___TRANS___PRE___449, đây là một bitmap của các cờ sau:

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 451¶

Đối tượng mã được tối ưu hóa, sử dụng địa phương nhanh.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 453¶

Nếu được đặt, một dict mới sẽ được tạo cho khung hình NO___TRANS___PRE___454 khi đối tượng mã được thực thi.

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 456¶

Đối tượng mã có tham số vị trí thay đổi (không ___ trans ___ pre ___ 219 giống như).

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 459¶

Đối tượng mã có tham số từ khóa biến (không ___ trans ___ pre ___ 220 giống như).PEP 492 for more details.

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

Trạng thái bên trong hiện tại của máy phát cũng có thể được truy vấn. Điều này chủ yếu là hữu ích cho mục đích thử nghiệm, để đảm bảo rằng trạng thái nội bộ được cập nhật như mong đợi:

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 442 (máy phát) ¶PEP 492 for more details.

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

Trạng thái bên trong hiện tại của máy phát cũng có thể được truy vấn. Điều này chủ yếu là hữu ích cho mục đích thử nghiệm, để đảm bảo rằng trạng thái nội bộ được cập nhật như mong đợi:

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 442 (máy phát) ¶PEP 525 for more details.

Nhận ánh xạ của các biến cục bộ trực tiếp trong Trình tạo đến các giá trị hiện tại của chúng. Một từ điển được trả về các bản đồ từ tên biến sang các giá trị. Đây là tương đương với việc gọi NO___Trans___Pre___443 trong phần thân của máy phát điện và tất cả các cảnh báo tương tự được áp dụng.

Nếu Trình tạo là một trình tạo không có khung hiện tại, thì một từ điển trống được trả về.

>>> def f():
...     a = 1
...     b = 2
... 
>>> f.__code__.co_names
()
>>> f.__code__.co_varnames
('a', 'b')
61 được nâng lên nếu Trình tạo không phải là đối tượng máy phát Python.

Chi tiết triển khai CPYThon: Hàm này dựa vào trình tạo lộ ra khung ngăn xếp Python cho hướng nội, điều này được đảm bảo là trường hợp trong tất cả các triển khai của Python. Trong những trường hợp như vậy, chức năng này sẽ luôn trả về một từ điển trống.

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

Không ___ trans ___ pre ___ 53no ___ trans ___ pre ___ 446 (coroutine) ¶

Hàm này tương tự như no___trans___pre___447, nhưng hoạt động cho các đối tượng coroutine được tạo bởi các hàm no___trans___pre___88.

Mã đối tượng Bit Flags¶

Các đối tượng mã Python có thuộc tính NO___TRANS___PRE___449, đây là một bitmap của các cờ sau: