inspect
— Inspektera live-objekt¶
Källkod: Lib/inspect.py
Modulen inspect
innehåller flera användbara funktioner som hjälper dig att få information om aktiva objekt som moduler, klasser, metoder, funktioner, spårningar, ramobjekt och kodobjekt. Den kan till exempel hjälpa dig att undersöka innehållet i en klass, hämta källkoden för en metod, extrahera och formatera argumentlistan för en funktion eller få all information du behöver för att visa en detaljerad spårning.
Det finns fyra huvudtyper av tjänster som tillhandahålls av denna modul: typkontroll, hämtning av källkod, inspektion av klasser och funktioner samt undersökning av tolkens stack.
Typer och medlemmar¶
Funktionen getmembers()
hämtar medlemmarna i ett objekt, t.ex. en klass eller en modul. De funktioner vars namn börjar med ”is” är huvudsakligen praktiska val för det andra argumentet till getmembers()
. De hjälper dig också att avgöra när du kan förvänta dig att hitta följande specialattribut (se Importrelaterade attribut på modulobjekt för modulattribut):
Typ |
Attribut |
Beskrivning |
---|---|---|
class |
__doc__ |
dokumentationssträng |
__name__ |
namn med vilket denna klass definierades |
|
__qualname__ |
kvalificerat namn |
|
__module__ |
namnet på den modul där denna klass definierades |
|
__type_params__ |
En tupel som innehåller typ-parametrar för en generisk klass |
|
metod |
__doc__ |
dokumentationssträng |
__name__ |
namn med vilket denna metod definierades |
|
__qualname__ |
kvalificerat namn |
|
__func__ |
funktionsobjekt som innehåller implementering av metod |
|
__self__ |
instans som denna metod är bunden till, eller |
|
__module__ |
namn på modul där denna metod definierades |
|
function |
__doc__ |
dokumentationssträng |
__name__ |
namn med vilket denna funktion definierades |
|
__qualname__ |
kvalificerat namn |
|
__code__ |
kodobjekt som innehåller kompilerad funktion bytecode |
|
__defaults__ |
tupel av eventuella standardvärden för positions- eller nyckelordsparametrar |
|
__kwdefaults__ |
mappning av eventuella standardvärden för parametrar som endast innehåller nyckelord |
|
__globals__ |
global namnrymd där denna funktion definierades |
|
__builtins__ |
namnrymd för inbyggda komponenter |
|
__annotations__ |
mappning av parameternamn till annoteringar; |
|
__type_params__ |
En tupel som innehåller typ-parametrarna för en generisk funktion |
|
__module__ |
namn på modul där denna funktion definierades |
|
traceback |
tb_frame |
ramobjekt på denna nivå |
tb_lasti |
index för det senaste försöket till instruktion i bytecode |
|
tb_lineno |
aktuellt radnummer i Python-källkoden |
|
tb_next |
nästa inre traceback-objekt (anropas av denna nivå) |
|
frame |
f_back |
nästa yttre ramobjekt (den här ramens anropare) |
f_builtins |
builtins namnrymd som ses av denna ram |
|
f_code |
kodobjekt som exekveras i denna bildruta |
|
f_globals |
global namnrymd som ses av denna ram |
|
f_lasti |
index för det senaste försöket till instruktion i bytecode |
|
f_lineno |
aktuellt radnummer i Python-källkoden |
|
f_locals |
lokalt namnrymd som ses av denna ram |
|
f_generator |
returnerar generatorn eller coroutine-objektet som äger den här ramen, eller |
|
f_trace |
spårningsfunktion för denna ram, eller |
|
f_trace_lines |
ange om en spårningshändelse ska utlösas för varje källkodslinje |
|
f_trace_opcodes |
ange om händelser per opcode begärs |
|
clear() |
används för att rensa alla referenser till lokala variabler |
|
code |
co_argcount |
antal argument (inkluderar inte argument med endast nyckelord, * eller ** args) |
co_code |
sträng av rå kompilerad bytecode |
|
co_cellvars |
tupel av namn på cellvariabler (refererade av innehållande scopes) |
|
co_consts |
tuple av konstanter som används i bytekoden |
|
co_filename |
namn på filen där detta kodobjekt skapades |
|
co_firstlineno |
nummer på första raden i Python-källkod |
|
co_flags |
bitmapp av |
|
co_lnotab |
kodad mappning av radnummer till bytecode-index |
|
co_freevars |
tupel av namn på fria variabler (refereras via en funktions closure) |
|
co_posonlyargcount |
antal positionella argument |
|
co_kwonlyargcount |
antal argument för endast nyckelord (ej inkluderande ** argument) |
|
co_name |
namn med vilket detta kodobjekt definierades |
|
co_qualname |
fullständigt kvalificerat namn med vilket detta kodobjekt definierades |
|
co_names |
tupel av namn som inte är argument och funktionslokaler |
|
co_nlocals |
antal lokala variabler |
|
co_stacksize |
stackutrymme för virtuell maskin krävs |
|
co_varnames |
tupel av namn på argument och lokala variabler |
|
co_lines() |
returnerar en iterator som ger successiva bytecode-intervall |
|
co_positions() |
returnerar en iterator med källkodspositioner för varje bytecode-instruktion |
|
replace() |
returnerar en kopia av kodobjektet med nya värden |
|
generator |
__name__ |
namn |
__qualname__ |
kvalificerat namn |
|
gi_frame |
frame |
|
gi_running |
är generatorn igång? |
|
gi_code |
code |
|
gi_yieldfrom |
objekt som itereras av |
|
asynkron generator |
__name__ |
namn |
__qualname__ |
kvalificerat namn |
|
ag_await |
objektet som väntar på, eller |
|
ag_frame |
frame |
|
ag_running |
är generatorn igång? |
|
ag_code |
code |
|
coroutine |
__name__ |
namn |
__qualname__ |
kvalificerat namn |
|
cr_await |
objektet som väntar på, eller |
|
cr_frame |
frame |
|
cr_running |
är coroutinen igång? |
|
cr_code |
code |
|
cr_origin |
där coroutine skapades, eller |
|
inbyggd |
__doc__ |
dokumentationssträng |
__name__ |
ursprungliga namnet på denna funktion eller metod |
|
__qualname__ |
kvalificerat namn |
|
__self__ |
instans som en metod är bunden till, eller |
Ändrad i version 3.5: Lägg till attributen __qualname__
och gi_yieldfrom
till generatorer.
Attributet __name__
för generatorer sätts nu utifrån funktionsnamnet, istället för kodnamnet, och det kan nu ändras.
Ändrad i version 3.7: Lägg till attributet cr_origin
för coroutines.
Ändrad i version 3.10: Lägg till attributet __builtins__
för funktioner.
Ändrad i version 3.14: Lägg till attributet f_generator
för ramar.
- inspect.getmembers(object[, predicate])¶
Returnera alla medlemmar i ett objekt i en lista med par av
(name, value)
sorterade efter namn. Om det valfria argumentet predicate anges, som kommer att anropas med objektetvalue
för varje medlem, inkluderas endast medlemmar för vilka predikatet returnerar ett sant värde.Anteckning
getmembers()
returnerar endast klassattribut som definieras i metaklassen när argumentet är en klass och dessa attribut har listats i metaklassens anpassade__dir__()
.
- inspect.getmembers_static(object[, predicate])¶
Returnerar alla medlemmar i ett objekt i en lista med
(namn, värde)
-par sorterade efter namn utan att utlösa dynamisk sökning via deskriptorprotokollet, __getattr__ eller __getattribute__. Alternativt kan du bara returnera medlemmar som uppfyller ett givet predikat.Anteckning
getmembers_static()
kanske inte kan hämta alla medlemmar som getmembers kan hämta (som dynamiskt skapade attribut) och kan hitta medlemmar som getmembers inte kan (som deskriptorer som ger upphov till AttributeError). Den kan också returnera deskriptorobjekt i stället för instansmedlemmar i vissa fall.Tillagd i version 3.11.
- inspect.getmodulename(path)¶
Returnerar namnet på modulen som namnges av filen path, utan att inkludera namnen på omslutande paket. Filtillägget kontrolleras mot alla poster i
importlib.machinery.all_suffixes()
. Om det matchar returneras den slutliga sökvägskomponenten med tillägget borttaget. I annat fall returnerasNone
.Observera att denna funktion endast returnerar ett meningsfullt namn för faktiska Python-moduler - sökvägar som potentiellt hänvisar till Python-paket kommer fortfarande att returnera
None
.Ändrad i version 3.3: Funktionen är direkt baserad på
importlib
.
- inspect.ismodule(object)¶
Returnerar
True
om objektet är en modul.
- inspect.isclass(object)¶
Returnerar
True
om objektet är en klass, oavsett om den är inbyggd eller skapad i Python-kod.
- inspect.ismethod(object)¶
Returnerar
True
om objektet är en bunden metod skriven i Python.
- inspect.isfunction(object)¶
Returnerar
True
om objektet är en Python-funktion, vilket inkluderar funktioner som skapats av ett lambda-uttryck.
- inspect.isgeneratorfunction(object)¶
Returnerar
True
om objektet är en Python-generatorfunktion.Ändrad i version 3.8: Funktioner inlindade i
functools.partial()
returnerar nuTrue
om den inlindade funktionen är en Python-generatorfunktion.Ändrad i version 3.13: Funktioner inlindade i
functools.partialmethod()
returnerar nuTrue
om den inlindade funktionen är en Python-generatorfunktion.
- inspect.isgenerator(object)¶
Returnerar
True
om objektet är en generator.
- inspect.iscoroutinefunction(object)¶
Returnerar
True
om objektet är en coroutine function (en funktion definierad med enasync def
syntax), enfunctools.partial()
som omsluter en coroutine function, eller en sync-funktion markerad medmarkcoroutinefunction()
.Tillagd i version 3.5.
Ändrad i version 3.8: Funktioner inlindade i
functools.partial()
returnerar nuTrue
om den inlindade funktionen är en coroutine function.Ändrad i version 3.12: Synkroniseringsfunktioner markerade med
markcoroutinefunction()
returnerar nuTrue
.Ändrad i version 3.13: Funktioner inlindade i
functools.partialmethod()
returnerar nuTrue
om den inlindade funktionen är en coroutine function.
- inspect.markcoroutinefunction(func)¶
Dekorator för att markera en anropbar funktion som en coroutine function om den annars inte skulle upptäckas av
iscoroutinefunction()
.Detta kan vara användbart för sync-funktioner som returnerar en coroutine, om funktionen skickas till ett API som kräver
iscoroutinefunction()
.När det är möjligt är det att föredra att använda en
async def
-funktion. Det är också acceptabelt att anropa funktionen och testa returen mediscoroutine()
.Tillagd i version 3.12.
- inspect.iscoroutine(object)¶
Returnerar
True
om objektet är en coroutine som skapats av enasync def
-funktion.Tillagd i version 3.5.
- inspect.isawaitable(object)¶
Returnerar
True
om objektet kan användas iawait
-uttryck.Kan också användas för att skilja generatorbaserade coroutines från vanliga generatorer:
import types def gen(): yield @types.coroutine def gen_coro(): yield assert not isawaitable(gen()) assert isawaitable(gen_coro())
Tillagd i version 3.5.
- inspect.isasyncgenfunction(object)¶
Returnerar
True
om objektet är en asynkron generator-funktion, till exempel:>>> async def agen(): ... yield 1 ... >>> inspect.isasyncgenfunction(agen) True
Tillagd i version 3.6.
Ändrad i version 3.8: Funktioner inlindade i
functools.partial()
returnerar nuTrue
om den inlindade funktionen är en asynkron generator-funktion.Ändrad i version 3.13: Funktioner inlindade i
functools.partialmethod()
returnerar nuTrue
om den inlindade funktionen är en coroutine function.
- inspect.isasyncgen(object)¶
Returnerar
True
om objektet är en asynkron generator iterator skapad av en asynkron generator funktion.Tillagd i version 3.6.
- inspect.istraceback(object)¶
Returnerar
True
om objektet är en traceback.
- inspect.isframe(object)¶
Returnerar
True
om objektet är en ram.
- inspect.iscode(object)¶
Returnerar
True
om objektet är en kod.
- inspect.isbuiltin(object)¶
Returnerar
True
om objektet är en inbyggd funktion eller en bunden inbyggd metod.
- inspect.ismethodwrapper(object)¶
Returnerar
True
om objekttypen är enMethodWrapperType
.Dessa är instanser av
MethodWrapperType
, till exempel__str__()
,__eq__()
och__repr__()
.Tillagd i version 3.11.
- inspect.isroutine(object)¶
Returnerar
True
om objektet är en användardefinierad eller inbyggd funktion eller metod.
- inspect.isabstract(object)¶
Returnerar
True
om objektet är en abstrakt basklass.
- inspect.ismethoddescriptor(object)¶
Returnerar
True
om objektet är en metodbeskrivare, men inte omismethod()
,isclass()
,isfunction()
ellerisbuiltin()
är true.Detta är till exempel sant för
int.__add__
. Ett objekt som klarar detta test har en__get__()
-metod, men inte en__set__()
-metod eller en__delete__()
-metod. Utöver detta varierar uppsättningen attribut. Ett__name__
-attribut är vanligtvis förnuftigt, och__doc__
är det ofta.Metoder som implementeras via deskriptorer som också klarar något av de andra testerna returnerar
False
frånismethoddescriptor()
-testet, helt enkelt för att de andra testerna lovar mer – du kan t.ex. räkna med att ha attributet__func__
(etc) när ett objekt klararismethod()
.Ändrad i version 3.13: Denna funktion rapporterar inte längre felaktigt objekt med
__get__()
och__delete__()
, men inte__set__()
, som metoddeskriptorer (sådana objekt är databeskriptorer, inte metoddeskriptorer).
- inspect.isdatadescriptor(object)¶
Returnerar
True
om objektet är en databeskrivare.Databeskrivare har en
__set__
eller en__delete__
metod. Exempel är properties (definierade i Python), getsets och members. De två sistnämnda definieras i C och det finns mer specifika tester tillgängliga för dessa typer, som är robusta över Python-implementationer. Vanligtvis har databeskrivare också attributen__name__
och__doc__
(properties, getsets och members har båda dessa attribut), men detta är inte garanterat.
- inspect.isgetsetdescriptor(object)¶
Returnerar
True
om objektet är en getset-descriptor.getsets är attribut som definieras i tilläggsmoduler via
PyGetSetDef
-strukturer. För Python-implementationer utan sådana typer kommer denna metod alltid att returneraFalse
.
- inspect.ismemberdescriptor(object)¶
Returnerar
True
om objektet är en member descriptor.Medlemsdeskriptorer är attribut som definieras i tilläggsmoduler via
PyMemberDef
-strukturer. För Python-implementationer utan sådana typer kommer denna metod alltid att returneraFalse
.
Hämtning av källkod¶
- inspect.getdoc(object)¶
Hämtar dokumentationssträngen för ett objekt, rensad med
cleandoc()
. Om dokumentationssträngen för ett objekt inte anges och objektet är en klass, en metod, en egenskap eller en deskriptor, hämtas dokumentationssträngen från arvshierarkin. ReturnerarNone
om dokumentationssträngen är ogiltig eller saknas.Ändrad i version 3.5: Dokumentationssträngar ärvs nu om de inte åsidosätts.
- inspect.getcomments(object)¶
Returnerar i en enda sträng alla rader med kommentarer som omedelbart föregår objektets källkod (för en klass, funktion eller metod), eller högst upp i Python-källfilen (om objektet är en modul). Om objektets källkod inte är tillgänglig returneras
None
. Detta kan hända om objektet har definierats i C eller i det interaktiva skalet.
- inspect.getfile(object)¶
Returnerar namnet på den fil (text eller binär) i vilken ett objekt definierades. Detta kommer att misslyckas med ett
TypeError
om objektet är en inbyggd modul, klass eller funktion.
- inspect.getmodule(object)¶
Försök att gissa vilken modul ett objekt definierades i. Returnerar
None
om modulen inte kan bestämmas.
- inspect.getsourcefile(object)¶
Returnerar namnet på Python-källfilen där ett objekt definierades eller
None
om inget sätt kan identifieras för att hämta källan. Detta kommer att misslyckas med ettTypeError
om objektet är en inbyggd modul, klass eller funktion.
- inspect.getsourcelines(object)¶
Returnerar en lista med källrader och startradnummer för ett objekt. Argumentet kan vara en modul, klass, metod, funktion, traceback, frame eller kodobjekt. Källkoden returneras som en lista över de rader som motsvarar objektet och radnumret anger var i den ursprungliga källfilen den första kodraden hittades. Ett
OSError
genereras om källkoden inte kan hämtas. EttTypeError
visas om objektet är en inbyggd modul, klass eller funktion.
- inspect.getsource(object)¶
Returnerar texten i källkoden för ett objekt. Argumentet kan vara en modul, en klass, en metod, en funktion, en spårning, en ram eller ett kodobjekt. Källkoden returneras som en enda sträng. Ett
OSError
uppstår om källkoden inte kan hämtas. EttTypeError
visas om objektet är en inbyggd modul, klass eller funktion.
- inspect.cleandoc(doc)¶
Städa upp indrag från dokumentsträngar som är indragna för att stämma överens med kodblock.
Alla inledande blanksteg tas bort från den första raden. Alla inledande blanksteg som kan tas bort på ett enhetligt sätt från den andra raden och framåt tas bort. Tomma rader i början och slutet tas därefter bort. Dessutom expanderas alla tabbar till mellanslag.
Introspektering av anropsbara objekt med signaturobjektet¶
Tillagd i version 3.3.
Objektet Signature
representerar anropssignaturen för ett anropsbart objekt och dess returannotation. För att hämta ett Signature
-objekt, använd funktionen signature()
.
- inspect.signature(callable, *, follow_wrapped=True, globals=None, locals=None, eval_str=False, annotation_format=Format.VALUE)¶
Returnerar ett
Signature
-objekt för den givna callable:>>> 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'>
Accepterar ett brett utbud av Python-anropsbara, från vanliga funktioner och klasser till
functools.partial()
-objekt.Om några av anteckningarna är strängar (t.ex. för att
from __future__ import annotations
användes), kommersignature()
att försöka att automatiskt avstränga anteckningarna med hjälp avannotationlib.get_annotations()
. Parametrarna globals, locals och eval_str skickas tillannotationlib.get_annotations()
när anteckningarna löses upp; se dokumentationen förannotationlib.get_annotations()
för instruktioner om hur dessa parametrar används. En medlem i enumannotationlib.Format
kan skickas till parametern annotation_format för att styra formatet på de returnerade anteckningarna. Använd t.ex.annotation_format=annotationlib.Format.STRING
för att returnera anteckningar i strängformat.Utlöser
ValueError
om ingen signatur kan anges, ochTypeError
om den typen av objekt inte stöds. Om anteckningarna är strängade och eval_str inte är false, kan dessutomeval()
-anropen för att avstränga anteckningarna iannotationlib.get_annotations()
potentiellt ge upphov till alla typer av undantag.Ett snedstreck (/) i signaturen för en funktion anger att parametrarna före den är endast positionella. För mer information, se FAQ-posten om parametrar som endast är positionella.
Ändrad i version 3.5: Parametern follow_wrapped har lagts till. Passera
False
för att få en signatur av callable specifikt (callable.__wrapped__
kommer inte att användas för att packa upp dekorerade callables)Ändrad i version 3.10: Parametrarna globals, locals och eval_str har lagts till.
Ändrad i version 3.14: Parametern annotation_format har lagts till.
Anteckning
Vissa callables kanske inte är introspekterbara i vissa implementationer av Python. I CPython tillhandahåller till exempel vissa inbyggda funktioner som definieras i C inga metadata om sina argument.
Om det objekt som skickas har ett attribut
__signature__
kan vi använda det för att skapa signaturen. Den exakta semantiken är en implementationsdetalj och kan komma att ändras utan förvarning. Se källkoden för aktuell semantik.
- class inspect.Signature(parameters=None, *, return_annotation=Signature.empty)¶
Ett
Signature
-objekt representerar anropssignaturen för en funktion och dess returannotation. För varje parameter som accepteras av funktionen lagras ettParameter
-objekt i dessparameters
-samling.Det valfria argumentet parameters är en sekvens av
Parameter
-objekt, som valideras för att kontrollera att det inte finns några parametrar med duplicerade namn, och att parametrarna är i rätt ordning, dvs. först positional-only, sedan positional-or-keyword, och att parametrar med standardvärden följer parametrar utan standardvärden.Det valfria return_annotation-argumentet kan vara ett godtyckligt Python-objekt. Det representerar ”return”-annoteringen för den anropbara funktionen.
Signature
-objekt är föränderliga. AnvändSignature.replace()
ellercopy.replace()
för att göra en modifierad kopia.Ändrad i version 3.5:
Signature
-objekt är nu plockbara och hashable.- empty¶
En speciell markör på klassnivå för att ange avsaknad av en returannotation.
- parameters¶
En ordnad mappning av parameternamn till motsvarande
Parameter
-objekt. Parametrar visas i strikt definitionsordning, inklusive parametrar som endast innehåller nyckelord.Ändrad i version 3.7: Python garanterade endast uttryckligen att deklarationsordningen för parametrar som endast innehåller nyckelord skulle bevaras från och med version 3.7, även om denna ordning i praktiken alltid hade bevarats i Python 3.
- return_annotation¶
”Return”-annoteringen för den anropbara funktionen. Om anropsbarheten inte har någon ”return”-annotation, sätts detta attribut till
Signature.empty
.
- bind(*args, **kwargs)¶
Skapar en mappning från positions- och nyckelordsargument till parametrar. Returnerar
BoundArguments
om*args
och**kwargs
matchar signaturen, eller ger upphov till ettTypeError
.
- bind_partial(*args, **kwargs)¶
Fungerar på samma sätt som
Signature.bind()
, men tillåter utelämnande av vissa nödvändiga argument (efterliknarfunctools.partial()
beteende.) ReturnerarBoundArguments
, eller ger upphov till ettTypeError
om de passerade argumenten inte matchar signaturen.
- replace(*[, parameters][, return_annotation])¶
Skapar en ny
Signature
-instans baserat på den instans somreplace()
anropades på. Det är möjligt att skicka olika parametrar och/eller return_annotation för att åsidosätta motsvarande egenskaper hos bassignaturen. För att ta bortreturn_annotation
från den kopieradeSignature
, skicka inSignature.empty
.>>> 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'"
Signature
-objekt stöds också av den generiska funktionencopy.replace()
.
- format(*, max_width=None, quote_annotation_strings=True)¶
Skapa en strängrepresentation av objektet
Signature
.Om max_width anges kommer metoden att försöka passa in signaturen på rader med högst max_width tecken. Om signaturen är längre än max_width kommer alla parametrar att stå på separata rader.
Om quote_annotation_strings är False visas annotations i signaturen utan inledande och avslutande citattecken om de är strängar. Detta är användbart om signaturen skapades med formatet
STRING
eller omfrom __future__ import annotations
användes.Tillagd i version 3.13.
Ändrad i version 3.14: Parametern unquote_annotations har lagts till.
- classmethod from_callable(obj, *, follow_wrapped=True, globals=None, locals=None, eval_str=False)¶
Returnera ett
Signature
-objekt (eller dess underklass) för en given anropbar obj.Denna metod förenklar underklassning av
Signature
:class MySignature(Signature): pass sig = MySignature.from_callable(sum) assert isinstance(sig, MySignature)
Dess beteende är i övrigt identiskt med det för
signature()
.Tillagd i version 3.5.
Ändrad i version 3.10: Parametrarna globals, locals och eval_str har lagts till.
- class inspect.Parameter(name, kind, *, default=Parameter.empty, annotation=Parameter.empty)¶
Parameter
-objekt är föränderliga. Istället för att modifiera ettParameter
-objekt kan du användaParameter.replace()
ellercopy.replace()
för att skapa en modifierad kopia.Ändrad i version 3.5: Parameterobjekt är nu picklbara och hashable.
- empty¶
En särskild markör på klassnivå för att ange avsaknad av standardvärden och annoteringar.
- name¶
Namnet på parametern som en sträng. Namnet måste vara en giltig Python-identifierare.
CPython genererar implicita parameternamn av formen
.0
på de kodobjekt som används för att implementera förståelser och generatoruttryck.Ändrad i version 3.6: Dessa parameternamn exponeras nu av denna modul som namn som
implicit0
.
- default¶
Standardvärdet för parametern. Om parametern inte har något standardvärde, sätts detta attribut till
Parameter.empty
.
- annotation¶
Annotationen för parametern. Om parametern inte har någon annotation, sätts detta attribut till
Parameter.empty
.
- kind¶
Beskriver hur argumentvärden binds till parametern. De möjliga värdena är tillgängliga via
Parameter
(somParameter.KEYWORD_ONLY
), och stöder jämförelse och ordning, i följande ordning:Namn
Betydelse
POSITIONAL_ONLY
Värdet måste anges som ett positionellt argument. Endast positionella parametrar är de som visas före en
/
-post (om sådan finns) i en Python-funktionsdefinition.POSITIONAL_OR_KEYWORD
Värdet kan anges som antingen ett nyckelord eller ett positionellt argument (detta är standardbindningsbeteendet för funktioner som implementeras i Python)
VAR_POSITIONAL
En tupel av positionella argument som inte är bundna till någon annan parameter. Detta motsvarar en
*args
-parameter i en Python-funktionsdefinition.KEYWORD_ONLY
Värdet måste anges som ett nyckelordsargument. Parametrar som endast innehåller nyckelord är de som visas efter en
*
eller*args
post i en Python-funktionsdefinition.VAR_KEYWORD
Ett dict med nyckelordsargument som inte är bundna till någon annan parameter. Detta motsvarar en
**kwargs
-parameter i en Python-funktionsdefinition.Exempel: Skriv ut alla argument som bara innehåller nyckelord utan standardvärden:
>>> def foo(a, b, *, c, d=10): ... pass >>> sig = signature(foo) >>> for param in sig.parameters.values(): ... if (param.kind == param.KEYWORD_ONLY and ... param.default is param.empty): ... print('Parameter:', param) Parameter: c
- kind.description¶
Beskriver ett enumvärde av
Parameter.kind
.Tillagd i version 3.8.
Exempel: Skriv ut alla beskrivningar av argument:
>>> def foo(a, b, *, c, d=10): ... pass >>> sig = signature(foo) >>> for param in sig.parameters.values(): ... print(param.kind.description) positional or keyword positional or keyword keyword-only keyword-only
- replace(*[, name][, kind][, default][, annotation])¶
Skapar en ny
Parameter
-instans baserat på den instans som replaced anropades på. För att åsidosätta ettParameter
-attribut, skicka motsvarande argument. För att ta bort ett standardvärde eller/och en annotering från enParameter
, skickaParameter.empty
.>>> from inspect import Parameter >>> param = Parameter('foo', Parameter.KEYWORD_ONLY, default=42) >>> str(param) 'foo=42' >>> str(param.replace()) # Will create a shallow copy of 'param' 'foo=42' >>> str(param.replace(default=Parameter.empty, annotation='spam')) "foo: 'spam'"
Parameter
-objekt stöds också av den generiska funktionencopy.replace()
.
Ändrad i version 3.4: I Python 3.3 tilläts
Parameter
-objekt att haname
satt tillNone
om deraskind
var satt tillPOSITIONAL_ONLY
. Detta är inte längre tillåtet.
- class inspect.BoundArguments¶
Resultatet av ett anrop av
Signature.bind()
ellerSignature.bind_partial()
. Innehåller mappningen av argument till funktionens parametrar.- arguments¶
En föränderlig mappning av parameternamn till argumentvärden. Innehåller endast explicit bundna argument. Ändringar i
arguments
kommer att återspeglas iargs
ochkwargs
.Bör användas tillsammans med
Signature.parameters
för eventuell bearbetning av argument.Anteckning
Argument för vilka
Signature.bind()
ellerSignature.bind_partial()
förlitade sig på ett standardvärde hoppas över. Om det behövs kan du dock användaBoundArguments.apply_defaults()
för att lägga till dem.Ändrad i version 3.9:
arguments
är nu av typendict
. Tidigare var den av typencollections.OrderedDict
.
- kwargs¶
Ett dict av nyckelordsargumentvärden. Beräknas dynamiskt från attributet
arguments
. Argument som kan skickas positionellt inkluderas iargs
istället.
- apply_defaults()¶
Ange standardvärden för saknade argument.
För variable-positional argument (
*args
) är standardvärdet en tom tupel.För argument med nyckelord för variabler (
**kwargs
) är standardvärdet en tom dict.>>> def foo(a, b='ham', *args): pass >>> ba = inspect.signature(foo).bind('spam') >>> ba.apply_defaults() >>> ba.arguments {'a': 'spam', 'b': 'ham', 'args': ()}
Tillagd i version 3.5.
Egenskaperna
args
ochkwargs
kan användas för att anropa funktioner:def test(a, *, b): ... sig = signature(test) ba = sig.bind(10, b=20) test(*ba.args, **ba.kwargs)
Se även
- PEP 362 - Funktion Signatur Objekt.
Den detaljerade specifikationen, implementeringsdetaljer och exempel.
Klasser och funktioner¶
- inspect.getclasstree(classes, unique=False)¶
Ordna den angivna listan över klasser i en hierarki av nästlade listor. Där en nästlad lista visas innehåller den klasser som härrör från den klass vars post omedelbart föregår listan. Varje post är en 2-tupel som innehåller en klass och en tupel av dess basklasser. Om argumentet unique är sant, visas exakt en post i den returnerade strukturen för varje klass i den angivna listan. I annat fall kommer klasser som använder multipel nedärvning och deras ättlingar att visas flera gånger.
- inspect.getfullargspec(func)¶
Hämta namn och standardvärden för en Python-funktions parametrar. En namngiven tupel returneras:
FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations)
args är en lista med namn på positionella parametrar. varargs är namnet på parametern
*
ellerNone
om godtyckliga positionella argument inte accepteras. varkw är namnet på parametern**
ellerNone
om godtyckliga nyckelordsargument inte accepteras. defaults är en n-tupel av standardargumentvärden som motsvarar de sista n positionella parametrarna, ellerNone
om inga sådana standardvärden har definierats. kwonlyargs är en lista med parameternamn som endast innehåller nyckelord i deklarationsordning. kwonlydefaults är en ordbok som mappar parameternamn från kwonlyargs till de standardvärden som används om inget argument anges. annotations är en ordbok som mappar parameternamn till annotations. Den speciella nyckeln"return"
används för att rapportera funktionens returvärde (om någon).Notera att
signature()
och Signature Object tillhandahåller det rekommenderade API:et för anropsbar introspektion och stödjer ytterligare beteenden (som enbart positionella argument) som ibland påträffas i API:er för tilläggsmoduler. Denna funktion behålls främst för användning i kod som behöver upprätthålla kompatibilitet med Python 2inspect
modul API.Ändrad i version 3.4: Denna funktion är nu baserad på
signature()
, men ignorerar fortfarande__wrapped__
-attribut och inkluderar den redan bundna första parametern i signaturutmatningen för bundna metoder.Ändrad i version 3.6: Denna metod var tidigare dokumenterad som utfasad till förmån för
signature()
i Python 3.5, men det beslutet har återtagits för att återställa ett tydligt standardgränssnitt för Python 2/3-kod med en enda källa som migrerar bort från det äldregetargspec()
API.Ändrad i version 3.7: Python garanterade endast uttryckligen att deklarationsordningen för parametrar som endast innehåller nyckelord skulle bevaras från och med version 3.7, även om denna ordning i praktiken alltid hade bevarats i Python 3.
- inspect.getargvalues(frame)¶
Hämta information om argument som skickas in i en viss frame. En named tuple
ArgInfo(args, varargs, keywords, locals)
returneras. args är en lista över argumentens namn. varargs och keywords är namnen på argumenten*
och**
ellerNone
. locals är locals-ordlistan för den givna ramen.Anteckning
Denna funktion markerades oavsiktligt som föråldrad i Python 3.5.
- inspect.formatargvalues(args[, varargs, varkw, locals, formatarg, formatvarargs, formatvarkw, formatvalue])¶
Formaterar en vacker argumentspecifikation från de fyra värden som returneras av
getargvalues()
. Argumenten format* är motsvarande valfria formateringsfunktioner som anropas för att omvandla namn och värden till strängar.Anteckning
Denna funktion markerades oavsiktligt som föråldrad i Python 3.5.
- inspect.getmro(cls)¶
Returnerar en tupel av klass cls basklasser, inklusive cls, i metodupplösningsordning. Ingen klass förekommer mer än en gång i denna tupel. Observera att metodupplösningsordningen beror på cls:s typ. Om inte en mycket märklig användardefinierad metatyp används, kommer cls att vara det första elementet i tupeln.
- inspect.getcallargs(func, /, *args, **kwds)¶
Bind args och kwds till argumentnamnen i Python-funktionen eller -metoden func, som om den anropades med dem. För bundna metoder binds även det första argumentet (vanligtvis kallat
self
) till den associerade instansen. En dict returneras, som mappar argumentnamnen (inklusive namnen på argumenten*
och**
, om sådana finns) till deras värden från args och kwds. Om func anropas på fel sätt, dvs. närfunc(*args, **kwds)
skulle ge upphov till ett undantag på grund av inkompatibel signatur, ges ett undantag av samma typ och med samma eller liknande meddelande. Ett exempel:>>> from inspect import getcallargs >>> def f(a, b=1, *pos, **named): ... pass ... >>> getcallargs(f, 1, 2, 3) == {'a': 1, 'named': {}, 'b': 2, 'pos': (3,)} True >>> getcallargs(f, a=2, x=4) == {'a': 2, 'named': {'x': 4}, 'b': 1, 'pos': ()} True >>> getcallargs(f) Traceback (most recent call last): ... TypeError: f() missing 1 required positional argument: 'a'
Tillagd i version 3.2.
Föråldrad sedan version 3.5: Använd
Signature.bind()
ochSignature.bind_partial()
istället.
- inspect.getclosurevars(func)¶
Hämta mappningen av externa namnreferenser i en Python-funktion eller -metod func till deras aktuella värden. En named tuple
ClosureVars(nonlocals, globals, builtins, unbound)
returneras. nonlocals mappar refererade namn till lexikala stängningsvariabler, globals till funktionens modulglobaler och builtins till de builtins som är synliga från funktionens kropp. unbound är den uppsättning namn som refereras till i funktionen och som inte kunde lösas alls med tanke på de aktuella modulglobalerna och builtins.TypeError
uppstår om func inte är en Python-funktion eller -metod.Tillagd i version 3.3.
- inspect.unwrap(func, *, stop=None)¶
Hämta objektet som är inlindat av func. Den följer kedjan av
__wrapped__
-attribut och returnerar det sista objektet i kedjan.stop är en valfri callback som accepterar ett objekt i omslagskedjan som sitt enda argument och som gör att uppackningen kan avslutas i förtid om callbacken returnerar ett sant värde. Om callbacken aldrig returnerar ett sant värde returneras det sista objektet i kedjan som vanligt. Till exempel använder
signature()
detta för att stoppa uppackningen om något objekt i kedjan har ett__signature__
-attribut definierat.ValueError
utlöses om en cykel påträffas.Tillagd i version 3.4.
- inspect.get_annotations(obj, *, globals=None, locals=None, eval_str=False, format=annotationlib.Format.VALUE)¶
Beräkna annoteringsdikten för ett objekt.
Detta är ett alias för
annotationlib.get_annotations()
; se dokumentationen för den funktionen för mer information.Tillagd i version 3.10.
Ändrad i version 3.14: Den här funktionen är nu ett alias för
annotationlib.get_annotations()
. Att anropa den sominspect.get_annotations
kommer att fortsätta att fungera.
Tolkens stack¶
Några av följande funktioner returnerar FrameInfo
-objekt. För bakåtkompatibilitet tillåter dessa objekt tuple-liknande operationer på alla attribut utom positions
. Detta beteende anses vara föråldrat och kan komma att tas bort i framtiden.
- class inspect.FrameInfo¶
-
- filename¶
Filnamnet som associeras med den kod som körs av den ram som denna post motsvarar.
- lineno¶
Radnumret på den aktuella raden som är kopplad till den kod som körs av den ram som denna post motsvarar.
- function¶
Namnet på den funktion som utförs av den ram som denna post motsvarar.
- code_context¶
En lista med kontextrader från källkoden som exekveras av den ram som den här posten motsvarar.
- index¶
Index för den aktuella raden som körs i listan
code_context
.
- positions¶
Ett
dis.Positions
-objekt som innehåller startradenummer, slutradenummer, startkolumnförskjutning och slutkolumnförskjutning som är associerade med den instruktion som utförs av den ram som denna post motsvarar.
Ändrad i version 3.5: Returnera en named tuple istället för en
tuple
.Ändrad i version 3.11:
FrameInfo
är nu en klassinstans (som är bakåtkompatibel med den tidigare named tuple).
- class inspect.Traceback¶
- filename¶
Filnamnet som är associerat med koden som körs av den ram som denna traceback motsvarar.
- lineno¶
Radnumret för den aktuella raden som är kopplad till den kod som körs av den ram som denna traceback motsvarar.
- function¶
Funktionsnamnet som exekveras av den ram som denna traceback motsvarar.
- code_context¶
En lista med kontextrader från källkoden som exekveras av den ram som denna traceback motsvarar.
- index¶
Index för den aktuella raden som körs i listan
code_context
.
- positions¶
Ett
dis.Positions
-objekt som innehåller startradnummer, slutradnummer, startkolumnförskjutning och slutkolumnförskjutning som är associerade med den instruktion som utförs av den ram som denna traceback motsvarar.
Ändrad i version 3.11:
Traceback
är nu en klassinstans (som är bakåtkompatibel med den tidigare named tuple).
Anteckning
Om man behåller referenser till ramobjekt, som finns i det första elementet i de ramposter som dessa funktioner returnerar, kan det leda till att programmet skapar referenscykler. När en referenscykel har skapats kan livslängden för alla objekt som kan nås från de objekt som bildar cykeln bli mycket längre, även om Pythons valfria cykeldetektor är aktiverad. Om sådana cykler måste skapas är det viktigt att se till att de uttryckligen bryts för att undvika den fördröjda förstörelsen av objekt och den ökade minnesförbrukning som uppstår.
Även om cykeldetektorn kommer att fånga upp dessa, kan förstörelsen av ramarna (och lokala variabler) göras deterministisk genom att ta bort cykeln i en finally
-sats. Detta är också viktigt om cykeldetektorn var inaktiverad när Python kompilerades eller med gc.disable()
. Till exempel:
def handle_stackframe_without_leak():
frame = inspect.currentframe()
try:
# do something with the frame
finally:
del frame
Om du vill behålla ramen (t.ex. för att skriva ut en traceback senare) kan du också bryta referenscykler genom att använda metoden frame.clear()
.
Det valfria argumentet context som stöds av de flesta av dessa funktioner anger antalet rader med kontext som ska returneras, vilka är centrerade runt den aktuella raden.
- inspect.getframeinfo(frame, context=1)¶
Hämta information om en ram eller ett traceback-objekt. Ett
Traceback
-objekt returneras.Ändrad i version 3.11: Ett
Traceback
-objekt returneras istället för en namngiven tupel.
- inspect.getouterframes(frame, context=1)¶
Hämta en lista med
FrameInfo
-objekt för en ram och alla yttre ramar. Dessa ramar representerar de anrop som leder till skapandet av frame. Den första posten i den returnerade listan representerar frame; den sista posten representerar det yttersta anropet på frame:s stack.Ändrad i version 3.5: En lista med namngivna tupler
FrameInfo(frame, filename, lineno, function, code_context, index)
returneras.Ändrad i version 3.11: En lista med
FrameInfo
-objekt returneras.
- inspect.getinnerframes(traceback, context=1)¶
Hämta en lista med
FrameInfo
-objekt för en tracebacks ram och alla inre ramar. Dessa ramar representerar anrop som görs som en konsekvens av frame. Den första posten i listan representerar traceback; den sista posten representerar var undantaget uppstod.Ändrad i version 3.5: En lista med namngivna tupler
FrameInfo(frame, filename, lineno, function, code_context, index)
returneras.Ändrad i version 3.11: En lista med
FrameInfo
-objekt returneras.
- inspect.currentframe()¶
Returnerar ramobjektet för anroparens stackram.
Denna funktion förlitar sig på Python stack frame-stöd i tolken, vilket inte garanterat finns i alla implementationer av Python. Om den körs i en implementering utan stöd för Python stack frame returnerar denna funktion
None
.
- inspect.stack(context=1)¶
Returnerar en lista med
FrameInfo
-objekt för anroparens stack. Den första posten i den returnerade listan representerar anroparen; den sista posten representerar det yttersta anropet på stacken.Ändrad i version 3.5: En lista med namngivna tupler
FrameInfo(frame, filename, lineno, function, code_context, index)
returneras.Ändrad i version 3.11: En lista med
FrameInfo
-objekt returneras.
- inspect.trace(context=1)¶
Returnerar en lista med
FrameInfo
-objekt för stacken mellan den aktuella ramen och den ram i vilken ett undantag som för närvarande hanteras uppstod. Den första posten i listan representerar anroparen; den sista posten representerar var undantaget uppstod.Ändrad i version 3.5: En lista med namngivna tupler
FrameInfo(frame, filename, lineno, function, code_context, index)
returneras.Ändrad i version 3.11: En lista med
FrameInfo
-objekt returneras.
Hämta attribut statiskt¶
Både getattr()
och hasattr()
kan utlösa kodexekvering när de hämtar eller kontrollerar om attribut finns. Deskriptorer, som egenskaper, kommer att anropas och __getattr__()
och __getattribute__()
kan anropas.
För fall där du vill ha passiv introspektion, som dokumentationsverktyg, kan detta vara obekvämt. getattr_static()
har samma signatur som getattr()
men undviker att exekvera kod när den hämtar attribut.
- inspect.getattr_static(obj, attr, default=None)¶
Hämta attribut utan att utlösa dynamisk uppslagning via descriptor-protokollet,
__getattr__()
eller__getattribute__()
.Observera: den här funktionen kanske inte kan hämta alla attribut som getattr kan hämta (t.ex. dynamiskt skapade attribut) och kan hitta attribut som getattr inte kan (t.ex. beskrivningar som ger AttributeError). Den kan också returnera deskriptorobjekt i stället för instansmedlemmar.
Om instansen
__dict__
skuggas av en annan medlem (t.ex. en egenskap) kommer denna funktion inte att kunna hitta instansmedlemmar.Tillagd i version 3.2.
getattr_static()
löser inte deskriptorer, t.ex. slotdeskriptorer eller getsetdeskriptorer på objekt som implementerats i C. Deskriptorobjektet returneras i stället för det underliggande attributet.
Du kan hantera dessa med kod som följande. Observera att för godtyckliga getset-beskrivare kan anrop av dessa utlösa kodkörning:
# example code for resolving the builtin descriptor types
class _foo:
__slots__ = ['foo']
slot_descriptor = type(_foo.foo)
getset_descriptor = type(type(open(__file__)).name)
wrapper_descriptor = type(str.__dict__['__add__'])
descriptor_types = (slot_descriptor, getset_descriptor, wrapper_descriptor)
result = getattr_static(some_object, 'foo')
if type(result) in descriptor_types:
try:
result = result.__get__()
except AttributeError:
# descriptors can raise AttributeError to
# indicate there is no underlying value
# in which case the descriptor itself will
# have to do
pass
Aktuellt läge för generatorer, coroutines och asynkrona generatorer¶
När man implementerar coroutine-schemaläggare och för andra avancerade användningar av generatorer är det användbart att avgöra om en generator körs för närvarande, väntar på att starta eller återuppta körningen eller redan har avslutats. getgeneratorstate()
gör det enkelt att avgöra en generators aktuella tillstånd.
- inspect.getgeneratorstate(generator)¶
Hämta aktuellt tillstånd för en generator-iterator.
Möjliga tillstånd är:
GEN_CREATED: Väntar på att starta exekvering.
GEN_RUNNING: Exekveras för närvarande av tolken.
GEN_SUSPENDED: För närvarande suspenderad vid ett yield-uttryck.
GEN_CLOSED: Exekveringen har slutförts.
Tillagd i version 3.2.
- inspect.getcoroutinestate(coroutine)¶
Hämta aktuellt tillstånd för ett coroutine-objekt. Funktionen är avsedd att användas med coroutine-objekt som skapats av
async def
-funktioner, men accepterar alla coroutine-liknande objekt som har attributencr_running
ochcr_frame
.Möjliga tillstånd är:
CORO_CREATED: Väntar på att starta exekvering.
CORO_RUNNING: Exekveras för närvarande av tolken.
CORO_SUSPENDED: För närvarande avbruten vid ett await-uttryck.
CORO_CLOSED: Exekveringen har slutförts.
Tillagd i version 3.5.
- inspect.getasyncgenstate(agen)¶
Hämta aktuellt tillstånd för ett asynkront generatorobjekt. Funktionen är avsedd att användas med asynkrona iteratorobjekt som skapats av
async def
-funktioner som använderyield
-satsen, men accepterar alla asynkrona generatorliknande objekt som har attributenag_running
ochag_frame
.Möjliga tillstånd är:
AGEN_CREATED: Väntar på att starta körning.
AGEN_RUNNING: Exekveras för närvarande av tolken.
AGEN_SUSPENDED: För närvarande suspenderad vid ett yield-uttryck.
AGEN_CLOSED: Exekveringen har slutförts.
Tillagd i version 3.12.
Generatorns aktuella interna tillstånd kan också efterfrågas. Detta är mest användbart för teständamål, för att säkerställa att det interna tillståndet uppdateras som förväntat:
- inspect.getgeneratorlocals(generator)¶
Hämta mappningen av live lokala variabler i generator till deras aktuella värden. En ordbok returneras som mappar från variabelnamn till värden. Detta är likvärdigt med att anropa
locals()
i generatorns kropp, och alla samma varningar gäller.Om generator är en generator utan någon associerad ram returneras en tom ordbok.
TypeError
uppstår om generator inte är ett Python generator-objekt.Denna funktion förlitar sig på att generatorn exponerar en Python-stackram för introspektion, vilket inte garanterat är fallet i alla implementationer av Python. I sådana fall kommer denna funktion alltid att returnera en tom ordbok.
Tillagd i version 3.3.
- inspect.getcoroutinelocals(coroutine)¶
Denna funktion är analog med
getgeneratorlocals()
, men fungerar för coroutine-objekt som skapats avasync def
-funktioner.Tillagd i version 3.5.
- inspect.getasyncgenlocals(agen)¶
Denna funktion är analog med
getgeneratorlocals()
, men fungerar för asynkrona generatorobjekt som skapats avasync def
-funktioner som använderyield
-satsen.Tillagd i version 3.12.
Kodobjekt Bit Flaggor¶
Python-kodobjekt har ett co_flags
-attribut, som är en bitmapp av följande flaggor:
- inspect.CO_OPTIMIZED¶
Kodobjektet är optimerat och använder snabba lokala enheter.
- inspect.CO_NEWLOCALS¶
Om den är inställd kommer en ny dict att skapas för ramens
f_locals
när kodobjektet exekveras.
- inspect.CO_VARARGS¶
Kodobjektet har en variabel positionell parameter (
*args
-liknande).
- inspect.CO_VARKEYWORDS¶
Kodobjektet har en variabel nyckelordsparameter (
**kwargs
-liknande).
- inspect.CO_NESTED¶
Flaggan sätts när kodobjektet är en nästlad funktion.
- inspect.CO_GENERATOR¶
Flaggan sätts när kodobjektet är en generatorfunktion, d.v.s. ett generatorobjekt returneras när kodobjektet exekveras.
- inspect.CO_COROUTINE¶
Flaggan sätts när kodobjektet är en coroutine-funktion. När kodobjektet exekveras returnerar det ett coroutine-objekt. Se PEP 492 för mer information.
Tillagd i version 3.5.
- inspect.CO_ITERABLE_COROUTINE¶
Flaggan används för att omvandla generatorer till generatorbaserade coroutines. Generatorobjekt med denna flagga kan användas i
await
-uttryck och kanyield from
coroutine-objekt. Se PEP 492 för mer information.Tillagd i version 3.5.
- inspect.CO_ASYNC_GENERATOR¶
Flaggan sätts när kodobjektet är en asynkron generatorfunktion. När kodobjektet exekveras returnerar det ett asynkront generatorobjekt. Se PEP 525 för mer information.
Tillagd i version 3.6.
- inspect.CO_HAS_DOCSTRING¶
Flaggan sätts när det finns en docstring för kodobjektet i källkoden. Om den är satt kommer den att vara den första posten i
co_consts
.Tillagd i version 3.14.
- inspect.CO_METHOD¶
Flaggan sätts när kodobjektet är en funktion som definieras i klassomfånget.
Tillagd i version 3.14.
Anteckning
Flaggorna är specifika för CPython och kanske inte definieras i andra Python-implementationer. Dessutom är flaggorna en implementationsdetalj och kan tas bort eller föråldras i framtida Python-utgåvor. Det rekommenderas att använda offentliga API:er från modulen inspect
för alla introspektionsbehov.
Buffertflaggor¶
- class inspect.BufferFlags¶
Detta är en
enum.IntFlag
som representerar de flaggor som kan skickas till__buffer__()
-metoden för objekt som implementerar buffer protocol.Betydelsen av flaggorna förklaras i Typer av buffertförfrågningar.
- SIMPLE¶
- WRITABLE¶
- FORMAT¶
- ND¶
- STRIDES¶
- C_CONTIGUOUS¶
- F_CONTIGUOUS¶
- ANY_CONTIGUOUS¶
- INDIRECT¶
- CONTIG¶
- CONTIG_RO¶
- STRIDED¶
- STRIDED_RO¶
- RECORDS¶
- RECORDS_RO¶
- FULL¶
- FULL_RO¶
- READ¶
- WRITE¶
Tillagd i version 3.12.
Kommandoradsgränssnitt¶
Modulen inspect
ger också en grundläggande möjlighet till introspektion från kommandoraden.
Accepterar som standard namnet på en modul och skriver ut källan till den modulen. En klass eller funktion inom modulen kan skrivas ut istället genom att lägga till ett kolon och det kvalificerade namnet på målobjektet.
- --details¶
Skriv ut information om det angivna objektet i stället för källkoden