Hướng dẫn python get module object by name - python lấy đối tượng mô-đun theo tên

Nếu tôi muốn có được mô -đun hiện tại, ví dụ: Để tải lại nó, tôi sẽ làm:

import sys
sys.modules[__name__]

Có cách nào tốt hơn để làm điều này (ví dụ: không liên quan đến

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

0) không? Tốt hơn trong bối cảnh này có nghĩa là thành ngữ hơn, di động hơn, mạnh mẽ hơn hoặc nhiều hơn ... bất kỳ điều nào khác mà chúng ta thường mong muốn trong phần mềm của mình.

Tôi sử dụng Python 2, nhưng câu trả lời cho Python 3 chắc chắn sẽ hữu ích cho người khác.

Hỏi ngày 12 tháng 12 năm 2013 lúc 22:11Dec 12, 2013 at 22:11

Hướng dẫn python get module object by name - python lấy đối tượng mô-đun theo tên

5

Không có phương pháp thành ngữ nào để có được đối tượng mô -đun hiện tại từ

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

1 so với những gì bạn đã sử dụng.

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

0 được đặt bởi Python khi nhập, về cơ bản làm:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object

Vì vậy, tham chiếu

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

0 chính xác là những gì bạn muốn sử dụng ở đây.

Đã trả lời ngày 12 tháng 12 năm 2013 lúc 22:18Dec 12, 2013 at 22:18

Martijn Pieters ♦ Martijn PietersMartijn Pieters

996K277 Huy hiệu vàng3920 Huy hiệu bạc3262 Huy hiệu Đồng277 gold badges3920 silver badges3262 bronze badges

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:51:39 (UTC/GMT +8 giờ)

Python Basic: Bài tập-126 với giải pháp

Viết một chương trình Python để có được đối tượng mô -đun thực tế cho một đối tượng nhất định.

Giải pháp mẫu-1:-:-

Mã Python:

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

Đầu ra mẫu:

<module 'math' (built-in)>

Flowchart:

Hướng dẫn python get module object by name - python lấy đối tượng mô-đun theo tên

Giải pháp mẫu-2:-:-

Mã Python:

import inspect
def add(x, y):
    return x + y
print(inspect.getmodule(add))

Đầu ra mẫu:

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>

Flowchart:

Hướng dẫn python get module object by name - python lấy đối tượng mô-đun theo tên

Giải pháp mẫu-2:-

Trình chỉnh sửa mã Python:

Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn (và nhận xét) thông qua Disqus. Write a Python program to sum of all counts in a collections.
Next: Write a Python program to check if an integer fits in 64 bits.

Python: Lời khuyên trong ngày

Tạo UUID:

# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')

kiểm tra.co_async_generator¶ Lib/inspect.py


Cờ được đặt khi đối tượng mã là hàm tạo không đồng bộ. Khi đối tượng mã được thực thi, nó sẽ trả về một đối tượng tạo không đồng bộ. Xem PEP 525 để biết thêm chi tiết.

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

Ghi chú

Các lá cờ dành riêng cho CPython và có thể không được xác định trong các triển khai Python khác. Hơn nữa, các cờ là một chi tiết triển khai và có thể được gỡ bỏ hoặc không dùng nữa trong các bản phát hành Python trong tương lai. Nó khuyến nghị sử dụng API công khai từ mô -đun

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

4 cho bất kỳ nhu cầu hướng nội nào.

Loại hình

Thuộc tính

Sự mô tả

Mô -đun

__doc__

Chuỗi tài liệu

__file__

Tên tệp (Thiếu cho các mô-đun tích hợp)

class

__doc__

Chuỗi tài liệu

__name__

Tên tệp (Thiếu cho các mô-đun tích hợp)

__qualname__

Tên mà lớp này được xác định

__module__

Tên đủ điều kiện

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

__doc__

Chuỗi tài liệu

__name__

Tên tệp (Thiếu cho các mô-đun tích hợp)

__qualname__

Tên mà lớp này được xác định

__func__

Tên đủ điều kiện

__self__

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

__module__

phương pháp

function

__doc__

Chuỗi tài liệu

__name__

Tên tệp (Thiếu cho các mô-đun tích hợp)

__qualname__

Tên mà lớp này được xác định

__code__

Tên đủ điều kiệnbytecode

__defaults__

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

__kwdefaults__

phương pháp

__globals__

Tên mà phương pháp này đã được xác định

__builtins__

đối tượng chức năng chứa thực hiện phương thức

__annotations__

ví dụ mà phương thức này bị ràng buộc hoặc

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7

__module__

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

Tên mà hàm này được xác định

tb_frame

đối tượng mã chứa mã byte được biên dịch

tb_lasti

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í

tb_lineno

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

tb_next

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

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

f_back

ánh xạ tên tham số để chú thích; Khóa

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được dành riêng cho các chú thích trả lại.

f_builtins

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

f_code

tìm lại

f_globals

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

f_lasti

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í

f_lineno

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

f_locals

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

f_trace

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

ánh xạ tên tham số để chú thích; Khóa

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được dành riêng cho các chú thích trả lại.

co_argcount

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

co_code

tìm lại

co_cellvars

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

co_consts

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

co_filename

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

co_firstlineno

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

co_flags

khunghere

co_lnotab

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

co_freevars

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

co_posonlyargcount

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

co_kwonlyargcount

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

co_name

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

co_qualname

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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7

co_names

mã số

co_nlocals

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

co_stacksize

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

co_varnames

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)

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

__name__

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

__qualname__

Tên mà lớp này được xác định

gi_frame

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

gi_running

ánh xạ tên tham số để chú thích; Khóa

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được dành riêng cho các chú thích trả lại.

gi_code

ánh xạ tên tham số để chú thích; Khóa

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được dành riêng cho các chú thích trả lại.

gi_yieldfrom

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

tìm lại

__name__

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

__qualname__

Tên mà lớp này được xác định

cr_await

Tên đủ điều kiện

cr_frame

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

cr_running

ánh xạ tên tham số để chú thích; Khóa

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được dành riêng cho các chú thích trả lại.

cr_code

ánh xạ tên tham số để chú thích; Khóa

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được dành riêng cho các chú thích trả lại.

cr_origin

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

tìm lại

__doc__

Chuỗi tài liệu

__name__

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

__qualname__

Tên mà lớp này được xác định

__self__

Tên đủ điều kiện

Tên của mô -đun trong đó lớp này được xác địnhAdd

<module 'math' (built-in)>
7 and
<module 'math' (built-in)>
8 attributes to generators.

phương pháp

Tên mà phương pháp này đã được xác địnhAdd

import inspect
def add(x, y):
    return x + y
print(inspect.getmodule(add))

0 attribute to coroutines.

đối tượng chức năng chứa thực hiện phương thứcAdd

import inspect
def add(x, y):
    return x + y
print(inspect.getmodule(add))

1 attribute to functions.

ví dụ mà phương thức này bị ràng buộc hoặc
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7
getmembers(object[, predicate])

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

Tên mà hàm này được xác định

đối tượng mã chứa mã byte được biên dịch

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ígetmembers_static(object[, predicate])

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

Tên mà hàm này được xác định

đối tượng mã chứa mã byte được biên dịch

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

kiểm tra.getModulename (đường dẫn) ¶getmodulename(path)

Trả về tên của mô -đun được đặt tên bởi đường dẫn tệp, mà không bao gồm tên của các gói kèm theo. Phần mở rộng tệp được kiểm tra đối với tất cả các mục trong

import inspect
def add(x, y):
    return x + y
print(inspect.getmodule(add))

8. Nếu nó phù hợp, thành phần đường dẫn cuối cùng được trả về với phần mở rộng bị xóa. Nếu không,
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 được trả lại.

Lưu ý rằng chức năng này chỉ trả về một tên có ý nghĩa cho các mô -đun Python thực tế - các đường dẫn có khả năng đề cập đến các gói Python vẫn sẽ trả về

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7.

Đã thay đổi trong phiên bản 3.3: Hàm dựa trên

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
1.The function is based directly on
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
1.

Kiểm tra.ismodule (đối tượng) ¶ismodule(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là một mô -đun.

kiểm tra.isclass (đối tượng) ¶isclass(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một lớp, cho dù được tích hợp hoặc tạo trong mã Python.

Kiểm tra.ismethod (đối tượng) ¶ismethod(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một phương thức ràng buộc được viết bằng Python.

Kiểm tra.ISFunction (đối tượng) ¶isfunction(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 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.

kiểm tra.isgeneratorfunction (đối tượng) ¶isgeneratorfunction(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 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

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
7 bây giờ trả về
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu hàm được gói là hàm tạo Python.Functions wrapped in
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
7 now return
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 if the wrapped function is a Python generator function.

kiểm tra.isgenerator (đối tượng) ¶isgenerator(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là một trình tạo.

kiểm tra.iscoroutinefunction (đối tượng) ¶iscoroutinefunction(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là hàm coroutine (hàm được xác định bằng cú pháp
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1).coroutine function (a function defined with an
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1 syntax).

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

Kiểm tra.iscoroutine (đối tượng) ¶iscoroutine(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một coroutine được tạo bởi hàm
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1.coroutine created by an
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1 function.

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

Kiểm tra.iscoroutine (đối tượng) ¶isawaitable(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một coroutine được tạo bởi hàm
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1.

kiểm tra.isawaitable (đố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.

Kiểm tra.iscoroutine (đối tượng) ¶isasyncgenfunction(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một coroutine được tạo bởi hàm
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1.asynchronous generator function, for example:

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

kiểm tra.isawaitable (đối tượng) ¶

Trả về
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng có thể được sử dụng trong biểu thức
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
5.
isasyncgen(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.

kiểm tra.isawaitable (đối tượng) ¶

Trả về
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng có thể được sử dụng trong biểu thức
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
5.
istraceback(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:

kiểm tra.isasasyncgenfunction (đối tượng) ¶isframe(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 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.iscode(object)

kiểm tra.isasyncgen (đối tượng) ¶

Trả về
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một trình lặp máy phát không đồng bộ được tạo bởi hàm tạo không đồng bộ.
isbuiltin(object)

Kiểm tra.istRaceBack (đối tượng) ¶

Trả về
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là một dấu vết.
ismethodwrapper(object)

kiểm tra.isframe (đối tượng) ¶

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là một khung.

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

Kiểm tra.iscode (đối tượng) ¶isroutine(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là mã.

kiểm tra.isbuiltin (đối tượng) ¶isabstract(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 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.

kiểm tra.ismethodwrapper (đối tượng) ¶ismethoddescriptor(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu loại đối tượng là
def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())
3.

Đây là những trường hợp của

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

assert not isawaitable(gen())
assert isawaitable(gen_coro())
3, chẳng hạn như
def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())
5,
def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())
6 và
def gen():
    yield
@types.coroutine
def gen_coro():
    yield

assert not isawaitable(gen())
assert isawaitable(gen_coro())
7.

kiểm tra.isroutine (đối tượng) ¶

Trả về
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 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.
isdatadescriptor(object)

Kiểm tra.isabstract (đối tượng) ¶

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một lớp cơ sở trừu tượng.

kiểm tra.ismethoddescriptor (đối tượng) ¶isgetsetdescriptor(object)

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 Nếu đối tượng là một bộ mô tả phương thức, nhưng không phải nếu
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
1,
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
2,
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
3 hoặc
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
4 là đúng.

Điều này, ví dụ, đúng với

>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
5. Một đối tượng vượt qua thử nghiệm này có phương thức
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
6 nhưng không phải là phương thức
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
7, nhưng ngoài ra tập hợp các thuộc tính khác nhau. Một thuộc tính
<module 'math' (built-in)>
9 thường hợp lý và
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
9 thường là.
getsets are attributes defined in extension modules via
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
00 structures. For Python implementations without such types, this method will always return
>>> 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
<class 'int'>
0.

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ề
>>> 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
<class 'int'>
0 từ bài kiểm tra
>>> 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
<class 'int'>
1, đơn giản vì các thử nghiệm khác hứa hẹn nhiều hơn - ví dụ: bạn có thể tin vào việc có thuộc tính
>>> 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
<class 'int'>
2 (v.v.) khi một đối tượng vượt qua
>>> async def agen():
...     yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
1.
ismemberdescriptor(object)

kiểm tra.isdatadescriptor (đối tượng) ¶

Trả về

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
2 nếu đối tượng là bộ mô tả dữ liệu. Member descriptors are attributes defined in extension modules via
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
03 structures. For Python implementations without such types, this method will always return
>>> 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
<class 'int'>
0.

Lấy mã nguồn

kiểm tra.getDoc (đối tượng) ¶getdoc(object)

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
05. 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ề
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 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ề

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7. Đ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.

kiểm tra.getfile (đối tượng) ¶getfile(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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 nếu đối tượng là mô-đun, lớp hoặc chức năng tích hợp.

kiểm tra.getModule (đối tượng) ¶getmodule(object)

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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 nếu không thể xác định được mô -đun.

Kiểm tra.getSourceFile (đối tượng) ¶getsourcefile(object)

Trả về tên của tệp nguồn Python trong đó một đối tượng được xác định hoặc

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 nếu không có cách nào có thể được xác định để có được nguồn. Điều này sẽ thất bại với
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 nếu đối tượng là mô-đun, lớp hoặc chức năng tích hợp.

kiểm tra.getSourcelines (đối tượng) ¶getsourcelines(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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 đượ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:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 được nâng lên thay vì
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
14, giờ là bí danh của trước đây.
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 is raised instead of
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
14, now an alias of the former.

kiểm tra.getSource (đối tượng) ¶getsource(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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 đượ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:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 được nâng lên thay vì
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
14, giờ là bí danh của trước đây.
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 is raised instead of
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
14, now an alias of the former.

kiểm tra.getSource (đối tượng) ¶cleandoc(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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
12 được nâng lên nếu mã nguồn không thể được truy xuất.

Kiểm tra.Cleandoc (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.signature(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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18.

>>> 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
<class 'int'>

Kiểm tra.Signature (Callable, *, after_wrapped = true, globals = none, locals = none, eval_str = false)

Trả về một đối tượng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
19 cho
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
20 đã cho:

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 các đối tượng

<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
7.

Đố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 (

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
22),
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18 sẽ cố gắng tự động hủy các chú thích bằng cách sử dụng
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
24. Các tham số
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
25,
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
26 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
27 được chuyển vào
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
24 khi giải quyết các chú thích; Xem tài liệu cho
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
24 để 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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
30 nếu không có chữ ký nào có thể được cung cấp và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 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à
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
27 không phải là sai, thì cuộc gọi
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
33 để không ngừng các chú thích có thể có khả năng nâng cao bất kỳ loại ngoại lệ nào.
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
34 parameter. Pass
>>> 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
<class 'int'>
0 to get a signature of
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
20 specifically (
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
37 will not be used to unwrap decorated callables.)

Một dấu gạch chéo (/) trong chữ ký của một hàm biểu thị rằng các tham số trước đó chỉ là vị trí. Để biết thêm thông tin, hãy xem mục FAQ trên các tham số chỉ có vị trí.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
38,
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
26, and
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
27 parameters.

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
34 tham số. Vượt qua
>>> 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
<class 'int'>
0 để có được chữ ký của
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
20 cụ thể (
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
37 sẽ không được sử dụng để tháo các thiết bị gọi được trang trí.)

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
38,
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
26 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
27 tham số.

Ghi chúinspect.Signature(parameters=None, *, return_annotation=Signature.empty)

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ọ.

Đối số tham số tùy chọn là một chuỗi các đối tượng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
41, đượ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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
44 để 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.

trống rỗng¶

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.

thông số¶

Một ánh xạ được đặt hàng của các tham số Tên tên của các đối tượng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
41 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.

return_annotation¶

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ề của người khác, thì thuộc tính này được đặt thành

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
46.

BIND (*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ề

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
47 nếu
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
48 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
49 khớp với chữ ký hoặc tăng
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08.

BIND_PARTIAL (*args, ** kwargs) ¶(*args, **kwargs)

Hoạt động tương tự như

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
51, nhưng cho phép bỏ qua một số đối số cần thiết (bắt chước hành vi
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
7.) Trả về
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
47 hoặc tăng
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 nếu các đối số được thông qua không khớp với chữ ký.

thay thế (*[, 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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
42 và/hoặc
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
56 khác nhau để ghi đè các thuộc tính tương ứng của chữ ký cơ sở. Để loại bỏ return_annotation khỏi chữ ký đã sao chép, vượt qua trong
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
46.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
0

classMethodFrom_callable (obj, *, theo dõi_wrapped = true, globalns = none, localns = none) ¶from_callable(obj, *, follow_wrapped=True, globalns=None, localns=None)

Trả về một đối tượng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
19 (hoặc lớp con của nó) cho một
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
59 có thể gọi nhất định. Vượt qua
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
60 để có được chữ ký là
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
59 mà không mở chuỗi
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
62 của nó.
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
63 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
64 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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
19:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
1

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

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
63 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
64 tham số.
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
63 and
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
64 parameters.

ClassInsPect.Parameter (Tên, Kind, *, Default = Parameter.Empty, Annotation = tham số.Empty) ¶inspect.Parameter(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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
68 để tạo một bản sao được 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.

trống rỗng¶

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.

thông số¶

Một ánh xạ được đặt hàng của các tham số Tên tên của các đối tượng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
41 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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
69 on the code objects used to implement comprehensions and generator expressions.

return_annotation¶These parameter names are exposed by this module as names like

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
70.

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ề của người khác, thì thuộc tính này được đặt thành
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
46.

BIND (*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ề
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
47 nếu
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
48 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
49 khớp với chữ ký hoặc tăng
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08.

BIND_PARTIAL (*args, ** kwargs) ¶

Hoạt động tương tự như
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
51, nhưng cho phép bỏ qua một số đối số cần thiết (bắt chước hành vi
<module '__main__' from '/tmp/sessions/5ced515afe46d808/main.py'>
7.) Trả về
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
47 hoặc tăng
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 nếu các đối số được thông qua không khớp với chữ ký.

thay thế (*[, tham số] [, 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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
42 và/hoặc
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
56 khác nhau để ghi đè các thuộc tính tương ứng của chữ ký cơ sở. Để loại bỏ return_annotation khỏi chữ ký đã sao chép, vượt qua trong
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
46.

classMethodFrom_callable (obj, *, theo dõi_wrapped = true, globalns = none, localns = none) ¶

POSITIONAL_ONLY

Trả về một đối tượng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
19 (hoặc lớp con của nó) cho một
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
59 có thể gọi nhất định. Vượt qua
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
60 để có được chữ ký là
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
59 mà không mở chuỗi
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
62 của nó.
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
63 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
64 sẽ được sử dụng làm không gian tên khi giải quyết các chú thích.

POSITIONAL_OR_KEYWORD

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
19:

VAR_POSITIONAL

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

KEYWORD_ONLY

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
63 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
64 tham số.

VAR_KEYWORD

ClassInsPect.Parameter (Tên, Kind, *, Default = Parameter.Empty, Annotation = tham số.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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
68 để tạo một bản sao được sửa đổi.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
2

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

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

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

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
3

thay thế (*[, name] [, 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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
41, hãy truyề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 vượt qua
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
71.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
4

Đã thay đổi trong phiên bản 3.4: Trong các đối tượng tham số Python 3.3 được phép có

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
82 được đặt thành
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 nếu
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
84 của chúng được đặt thành
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
85. Điều này không còn được phép.In Python 3.3 Parameter objects were allowed to have
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
82 set to
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 if their
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
84 was set to
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
85. This is no longer permitted.

ClassInsPect.BoundArgument¶inspect.BoundArguments

Kết quả của cuộc gọi

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
51 hoặc
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
87. Giữ ánh xạ các đối số đến các tham số chức năng.

tranh luận¶

Một ánh xạ có thể thay đổi của các tham số Tên tên của các giá trị đối với các giá trị của đối số. Chỉ chứa các đối số ràng buộc rõ ràng. Những thay đổi trong

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
88 sẽ phản ánh trong
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
89 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
90.

Nên được sử dụng cùng với

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
91 cho bất kỳ mục đích xử lý đối số nào.

args¶

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
88.

Kwargs¶

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
88.

Chữ ký¶

Một tham chiếu đến đối tượng phụ huynh

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
19.

Ứng dụng_defaults ()()

Đặ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 (

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
48) mặc định là một bộ gốc trống.

Đối với các đối số Biến-Keyword (

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
49) mặc định là một phương pháp trống.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
5

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

Các thuộc tính

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
89 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
90 có thể được sử dụng để gọi các chức năng:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
6

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

Kiểm tra.getClassTree (lớp, độc đáo = false) ¶getclasstree(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.

kiểm tra.getfullargspec (func) ¶getfullargspec(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:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
99

Args là danh sách các tên tham số vị trí. Varargs là tên của tham số

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
77 hoặc
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 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ố
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

02 hoặc
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7 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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

8 được sử dụng để báo cáo chú thích giá trị trả về hàm (nếu có).

Lưu ý rằng

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18 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ư các đố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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

4.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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

4 module API.

Đã thay đổi trong phiên bản 3.4: Hàm này hiện dựa trên

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18, nhưng vẫn bỏ qua các thuộc tính
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
62 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
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18, but still ignores
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
62 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 phản đối có lợi cho

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18 trong Python 3.5, nhưng quyết định đó đã được đảo ngược để khôi phục một giao diện tiêu chuẩn được hỗ trợ rõ ràng cho mã Python 2/3 của SOUS SOUS API.This method was previously documented as deprecated in favour of
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18 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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

11 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.

Kiểm tra.getArgValues ​​(khung)getargvalues(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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

12 đượ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 các đối số
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
77 và
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

02 hoặc
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7. Người dân địa phương là từ điển địa phương của khung đã cho.named tuple
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

12 is returned. args is a list of the argument names. varargs and keywords are the names of the
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
77 and
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

02 arguments or
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7. 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.

Kiểm tra.formatargvalues ​​(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]) ¶formatargvalues(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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

16. 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.

Kiểm tra.getmro (CLS) ¶getmro(cls)

Trả về một bộ tải của các lớp cơ sở CLS, bao gồm CLS, theo thứ tự phân giải phương thức. Không có lớp nào xuất hiện nhiều hơn một lần trong tuple này. Lưu ý rằng thứ tự độ phân giải phương thức phụ thuộc vào loại CLS. Trừ khi một siêu dữ liệu do người dùng rất đặc biệt được sử dụng, CLS sẽ là yếu tố đầu tiên của tuple.

Kiểm tra.getCallArss (func, /, *args, ** kwds) ¶getcallargs(func, /, *args, **kwds)

Liên kết các ARG và KWD với tên đối số của hàm Python hoặc Phương thức Func, như thể nó được gọi với chúng. Đối với các phương thức bị ràng buộc, liên kết cũng là đối số đầu tiên (thường được đặt tên là

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

17) với thể hiện liên quan. Một dict được trả về, ánh xạ các tên đối số (bao gồm tên của các đối số
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
77 và
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

02, nếu có) cho các giá trị của chúng từ ARGS và KWD. Trong trường hợp gọi Func không chính xác, tức là bất cứ khi nào
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

20 sẽ tăng một ngoại lệ vì chữ ký không tương thích, một ngoại lệ của cùng loại và cùng một thông điệp hoặc tương tự được nêu ra. Ví dụ:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
7

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

Kiểm tra.GetCluencesevars (FUNC) ¶getclosurevars(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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

21 đượ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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

21 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.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 được nâng lên nếu func không phải là hàm hoặc phương pháp python.

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

kiểm tra.unwrap (func, *, stop = none) ¶unwrap(func, *, stop=None)

Nhận đối tượng được bọc bởi func. Nó theo chuỗi các thuộc tính

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
62 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ụ:

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
18 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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

25 được xác định.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
30 được nâng lên nếu gặp phải một chu kỳ.

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

kiểm tra.get_annotations (obj, *, globals = none, locals = none, eval_str = false) ¶get_annotations(obj, *, globals=None, locals=None, eval_str=False)

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
59 có thể là một lớp học, lớp hoặc mô -đun có thể gọi được. Vượt qua một đối tượng của bất kỳ loại nào khác tăng
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08.

Trả lại một dict.

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

29 trả về một dict mới mỗi khi nó được gọi là; 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

    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    27 là đúng, các giá trị của loại
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    31 sẽ không được sắp xếp bằng cách sử dụng
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    33. Điều này được dự định để sử dụng với các chú thích chuỗi (
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    22).

  • Nếu

    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    59 không có một chú thích, hãy trả lại một dict trống rỗ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 cách sử dụng

    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    35 và
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    36 cho 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.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
27 kiểm soát xem các giá trị của loại
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

31 có được thay thế bằng kết quả gọi
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
33 trên các giá trị đó:

  • Nếu eval_str là đúng,

    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    33 được gọi là các giá trị của loại
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    31. .

  • Nếu eval_str là sai (mặc định), các giá trị của loại

    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    31 không thay đổi.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
38 và
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
26 được chuyển sang
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
33; Xem tài liệu cho
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
33 để biết thêm thông tin. Nếu
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
38 hoặc
module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
26 là
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7, hàm này có thể thay thế giá trị đó bằng mặc định cụ thể theo ngữ cảnh, tùy thuộc vào
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

53:

  • Nếu

    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    59 là một mô -đun,
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    38 mặc định là
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    56.

  • Nếu

    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    59 là một lớp,
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    38 mặc định là
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    59 và
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    26 mặc định cho không gian tên lớp
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    59.

  • Nếu

    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    59 là có thể gọi được,
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    38 mặc định là
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    64, mặc dù nếu
    module_object = import_py_file(import_name)
    module_object.__name__ = import_name
    sys.modules[import_name] = module_object
    
    59 là một hàm được bọc (sử dụng
    from inspect import getmodule
    from math import sqrt
    print(getmodule(sqrt))
    
    
    66) thì trước tiên thì chưa được mở.

Gọi

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

42 là thực tiễn tốt nhất để truy cập 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

Một số chức năng sau đây trả về các đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68. Đối với khả năng tương thích ngược, các đối tượng này cho phép các hoạt động giống như tuple trên tất cả các thuộc tính ngoại trừ
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

69. Hành vi này được coi là không dùng nữa và có thể bị loại bỏ trong tương lai.

classin inspect.FrameInfoframe

Đối tượng khung mà bản ghi tương ứng với.frame object that the record corresponds to.

Tên tệp

Tên tệp được liên kết với mã được thực thi bởi khung bản ghi này tương ứng với.

vải mỏng

Số dòng của dòng hiện tại được liên kết với mã được thực thi bởi khung bản ghi này tương ứng.

hàm số¶

Tên chức năng đang được thực hiện bởi khung bản ghi này tương ứng với.

code_context¶

Một danh sách các dòng ngữ cảnh từ mã nguồn mà LỚN được thực hiện bởi khung bản ghi này tương ứng.

mục lục¶

Chỉ số của dòng hiện tại được thực thi trong danh sách

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

70.

vị trí

Đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

71 chứa số dòng bắt đầu, số dòng cuối, bù cột bắt đầu và phần bù cột kết thúc được liên kết với lệnh được thực hiện bởi khung này bản ghi tương ứng.

Đã thay đổi trong phiên bản 3.11:

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 hiện là một thể hiện lớp (tương thích ngược với Tuple có tên trước đó).
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 is now a class instance (that is backwards compatible with the previous named tuple).

ClassInsPect.TraceBack¶ FileName¶ inspect.Tracebackfilename

Tên tệp được liên kết với mã được thực thi bởi khung theo dõi này tương ứng với.

vải mỏng

Số dòng của dòng hiện tại được liên kết với mã được thực thi bởi khung bản ghi này tương ứng.

hàm số¶

Tên chức năng đang được thực hiện bởi khung bản ghi này tương ứng với.

code_context¶

Một danh sách các dòng ngữ cảnh từ mã nguồn mà LỚN được thực hiện bởi khung bản ghi này tương ứng.

mục lục¶

Chỉ số của dòng hiện tại được thực thi trong danh sách

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

70.

vị trí

Đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

71 chứa số dòng bắt đầu, số dòng cuối, bù cột bắt đầu và phần bù cột kết thúc được liên kết với lệnh được thực hiện bởi khung này bản ghi tương ứng.

Đã thay đổi trong phiên bản 3.11:

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 hiện là một thể hiện lớp (tương thích ngược với Tuple có tên trước đó).
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

75 is now a class instance (that is backwards compatible with the previous named tuple).

ClassInsPect.TraceBack¶ FileName¶

Tên tệp được liên kết với mã được thực thi bởi khung theo dõi này tương ứng với.

Số dòng của dòng hiện tại được liên kết với mã được thực thi bởi khung theo dõi này tương ứng.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
8

Tên chức năng đang được thực hiện bởi khung hình này tương ứng với.

Một danh sách các dòng ngữ cảnh từ mã nguồn mà Lừa được thực hiện bởi khung theo dõi này tương ứng.

Đối tượng
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

71 chứa số dòng khởi đầu, số dòng cuối, bù cột bắt đầu và phần bù cột kết thúc được liên kết với lệnh được thực hiện bởi khung theo dõi này tương ứng với.
getframeinfo(frame, context=1)

Đã thay đổi trong phiên bản 3.11:

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

75 hiện là một thể hiện lớp (tương thích ngược với Tuple có tên trước đó).

Ghi chúA

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

75 object is returned instead of a named tuple.

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.getouterframes(frame, context=1)

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 mệnh đề

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

76. Đ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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

77. Ví dụ:

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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

78.A list of named tuples
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

82 is returned.

Đố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.A list of

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 objects is returned.

kiểm tra.getframinfo (khung, bối cảnh = 1) ¶getinnerframes(traceback, context=1)

Nhận thông tin về một khung hoặc đối tượng theo dõi. Một đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

75 được trả về.

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

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

78.A list of named tuples
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

82 is returned.

Đố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.A list of

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 objects is returned.

kiểm tra.getframinfo (khung, bối cảnh = 1) ¶currentframe()

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

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ề

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7. 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
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

7.

kiểm tra.stack (bối cảnh = 1) ¶stack(context=1)

Trả về một danh sách các đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 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.

Thay đổi trong phiên bản 3.5: Danh sách các bộ dữ liệu được đặt tên

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

82 được trả về.A list of named tuples
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

82 is returned.

Đã thay đổi trong phiên bản 3.11: Danh sách các đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 được trả về.A list of
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 objects is returned.

kiểm tra.trace (bối cảnh = 1) ¶trace(context=1)

Trả về một danh sách các đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 cho ngăn xếp giữa khung hiện tại và khung mà 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.

Thay đổi trong phiên bản 3.5: Danh sách các bộ dữ liệu được đặt tên

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

82 được trả về.A list of named tuples
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

82 is returned.

Đã thay đổi trong phiên bản 3.11: Danh sách các đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 được trả về.A list of
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 objects is returned.

kiểm tra.trace (bối cảnh = 1) ¶

Trả về một danh sách các đối tượng

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

68 cho ngăn xếp giữa khung hiện tại và khung mà 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¶

Cả
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

35 và
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

95 đều 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à
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

96 và
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

97 có thể được gọi.
getattr_static(obj, attr, default=None)

Đố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.

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

98 có chữ ký giống như
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

35 nhưng tránh được thực thi mã khi lấy các thuộc tính.

kiểm tra.getAttr_static (obj, attr, mặc định = không) ¶

Truy xuất các thuộc tính mà không kích hoạt tra cứu động thông qua giao thức mô tả,

from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

96 hoặc
from inspect import getmodule
from math import sqrt
print(getmodule(sqrt))

97.

Lưu ý: Hàm này có thể không thể truy xuất tất cả các thuộc tính mà GetAttr có thể tìm nạp (như các thuộc tính được tạo động) và có thể tìm thấy các thuộc tính mà GetAttr có thể (như các mô tả nâng cao thuộc tính). Nó cũng có thể trả về các đối tượng mô tả thay vì các thành viên thể hiện.

Nếu cá thể

<module 'math' (built-in)>
02 bị che khuất bởi một thành viên khác (ví dụ như một thuộc tính) thì hàm này sẽ không thể tìm thấy các thành viên thể hiện.

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

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
9

from inspect import getmodule from math import sqrt print(getmodule(sqrt)) 98 không giải quyết các mô tả, ví dụ như mô tả khe cắm hoặc mô tả getset trên các đối tượng được triển khai trong C. đối tượng mô tả được trả về thay vì thuộc tính cơ bản.

Bạn có thể xử lý những điều này với mã như sau. Lưu ý rằng đối với các mô tả getset tùy ý gọi các mô tả này có thể kích hoạt thực thi mã:

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

Khi triển khai các bộ lập lịch coroutine và đối với các công cụ tạo trình tạo nâng cao khác, rất hữu ích để xác định xem một trình tạo hiện đang thực thi, đang chờ để bắt đầu hoặc tiếp tục hoặc thực thi, hoặc đã chấm dứt.

<module 'math' (built-in)>
04 cho phép trạng thái hiện tại của một máy phát được xác định dễ dàng.

Kiểm tra.getgeneratorstate (Trình tạo) ¶
  • 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.

Lưu ý: Hàm này có thể không thể truy xuất tất cả các thuộc tính mà GetAttr có thể tìm nạp (như các thuộc tính được tạo động) và có thể tìm thấy các thuộc tính mà GetAttr có thể (như các mô tả nâng cao thuộc tính). Nó cũng có thể trả về các đối tượng mô tả thay vì các thành viên thể hiện.

Nếu cá thể
<module 'math' (built-in)>
02 bị che khuất bởi một thành viên khác (ví dụ như một thuộc tính) thì hàm này sẽ không thể tìm thấy các thành viên thể hiện.
getcoroutinestate(coroutine)

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

Kiểm tra.getgeneratorstate (Trình tạo) ¶
  • 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.

Kiểm tra.getCoroutInestate (Coroutine) ¶getgeneratorlocals(generator)

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

# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1, 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
<module 'math' (built-in)>
06 và
<module 'math' (built-in)>
07.

Coro_Created: Chờ bắt đầu thực thi.generator with no currently associated frame, then an empty dictionary is returned.

module_object = import_py_file(import_name)
module_object.__name__ = import_name
sys.modules[import_name] = module_object
08 is raised if generator is not a Python generator object.

Coro_rasty: Hiện đang được thực hiện bởi thông dịch viên. 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.

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

Kiểm tra.getCoroutInelocals (Coroutine) ¶getcoroutinelocals(coroutine)

Hàm này tương tự như

<module 'math' (built-in)>
10, nhưng hoạt động cho các đối tượng coroutine được tạo bởi các chức năng
# This creates a randomized 128-bit number that will almost certainly be unique.
# In fact, there are over 2122 possible UUIDs that can be generated. That's over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

>>> import uuid
>>> user_id = uuid.uuid4()
>>> user_id 
UUID('7c2faedd-805a-478e-bd6a-7b26210425c7')
1.

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

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

Các đối tượng mã Python có thuộc tính

<module 'math' (built-in)>
12, đây là một bitmap của các cờ sau:

kiểm tra.co_optimized¶CO_OPTIMIZED

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

kiểm tra.co_newlocals¶CO_NEWLOCALS

Nếu được đặt, một dict mới sẽ được tạo cho khung hình

<module 'math' (built-in)>
13 khi đối tượng mã được thực thi.

kiểm tra.co_varargs¶CO_VARARGS

Đối tượng mã có tham số vị trí thay đổi (giống như ____ 148).

kiểm tra.co_varkeywords¶CO_VARKEYWORDS

Đối tượng mã có tham số từ khóa biến (giống như ____ 149).

kiểm tra.co_nested¶CO_NESTED

Cờ được đặt khi đối tượng mã là một hàm lồng nhau.

kiểm tra.co_generator¶CO_GENERATOR

Cờ được đặt khi đối tượng mã là hàm trình tạo, tức là đối tượng Trình tạo được trả về khi đối tượng mã được thực thi.

kiểm tra.co_coroutine¶CO_COROUTINE

Cờ được đặt khi đối tượng mã là hàm coroutine. Khi đối tượng mã được thực thi, nó sẽ trả về một đối tượng Coroutine. Xem PEP 492 để biết thêm chi tiết.PEP 492 for more details.

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

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

Các đối tượng mã Python có thuộc tính

<module 'math' (built-in)>
12, đây là một bitmap của các cờ sau:PEP 492 for more details.

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

kiểm tra.co_optimized¶CO_ASYNC_GENERATOR

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

kiểm tra.co_newlocals¶

Nếu được đặt, một dict mới sẽ được tạo cho khung hình

<module 'math' (built-in)>
13 khi đối tượng mã được thực thi.

kiểm tra.co_varargs¶

Đối tượng mã có tham số vị trí thay đổi (giống như ____ 148).

kiểm tra.co_varkeywords¶

Đối tượng mã có tham số từ khóa biến (giống như ____ 149).

kiểm tra.co_nested¶

Cờ được đặt khi đối tượng mã là một hàm lồng nhau.

__ Mô -đun __ là gì?

Thuộc tính __module__ được dự định để truy xuất mô-đun trong đó hàm được xác định, để đọc mã nguồn hoặc đôi khi để nhập lại nó trong một tập lệnh.intended for retrieving the module where the function was defined, either to read the source code or sometimes to re-import it in a script.

Làm thế nào chúng ta có thể tìm thấy các tên được xác định bên trong mô -đun hiện tại?

Hàm Dir () được sử dụng để tìm hiểu tất cả các tên được xác định trong một mô -đun.Nó trả về một danh sách các chuỗi được sắp xếp có chứa các tên được xác định trong một mô -đun.Trong đầu ra, bạn có thể thấy tên của các hàm bạn đã xác định trong mô -đun, Thêm & Sub.Thuộc tính __name__ chứa tên của mô -đun. is used to find out all the names defined in a module. It returns a sorted list of strings containing the names defined in a module. In the output, you can see the names of the functions you defined in the module, add & sub . Attribute __name__ contains the name of the module.

Các mô -đun có thể có đối tượng?

Một mô -đun, giống như bất kỳ đối tượng nào khác, có thể được liên kết với một biến, một mục trong một thùng chứa hoặc một thuộc tính của một đối tượng.Ví dụ, các sys.Từ điển mô -đun, được bao phủ trong tải mô -đun, giữ các đối tượng mô -đun làm giá trị của nó.. For example, the sys. modules dictionary, covered in Module Loading, holds module objects as its values.

Mô -đun kiểm tra trong Python là gì?

Mô -đun kiểm tra giúp kiểm tra các đối tượng có trong mã mà chúng tôi đã viết.Vì Python là ngôn ngữ OOP và tất cả các mã được viết về cơ bản là sự tương tác giữa các đối tượng này, do đó mô -đun kiểm tra trở nên rất hữu ích trong việc kiểm tra các mô -đun nhất định hoặc một số đối tượng nhất định.helps in checking the objects present in the code that we have written. As Python is an OOP language and all the code that is written is basically an interaction between these objects, hence the inspect module becomes very useful in inspecting certain modules or certain objects.