Maison >développement back-end >Tutoriel Python >Qu'est-ce que l'introspection en Python ?

Qu'est-ce que l'introspection en Python ?

Guanhui
Guanhuiavant
2020-06-22 13:37:302142parcourir

Qu'est-ce que l'introspection en Python ?

Qu'est-ce que l'introspection ?

Dans la vie quotidienne, l'introspection est un acte d'auto-examen.

En programmation informatique, l'introspection fait référence à la capacité d'examiner quelque chose pour déterminer ce que c'est, ce qu'il sait et ce qu'il peut faire. L'introspection offre aux programmeurs une grande flexibilité et un grand contrôle.

Pour le dire plus simplement et directement : l'introspection signifie qu'un programme écrit dans un langage orienté objet peut connaître le type d'objet lorsqu'il est en cours d'exécution. Pour faire simple, le type d’objet peut être connu au moment de l’exécution.

Par exemple, python, buby, object-C et c++ ont tous la capacité d'introspecter. Parmi eux, c++ a la capacité d'introspection la plus faible. Il ne peut savoir que de quel type il s'agit, tandis que python peut savoir. de quel type il s'agit, et également de quelles propriétés possède-t-il.

La meilleure façon de comprendre l'introspection est à travers des exemples : Tapez introspection Voici des exemples d'introspection dans divers langages de programmation (les exemples dans ce lien sont très importants, il vous est peut-être difficile de comprendre ce qu'est l'introspection à travers le récit, mais à travers ces exemples, vous pouvez le comprendre immédiatement)

Retour à Python, les mécanismes d'introspection (utilisation de fonctions) les plus courants en Python sont : dir(), type(), hasattr() , isinstance(), grâce à ces fonctions, nous pouvons connaître le type de l'objet lorsque le programme est en cours d'exécution, déterminer si un certain attribut existe dans l'objet et accéder aux attributs de l'objet. La fonction

dir()

dir() est probablement la partie la plus célèbre du mécanisme d'introspection de Python. Il renvoie une liste triée des noms de propriété de tout objet qui lui est transmis. Si aucun objet n'est spécifié, dir() renvoie le nom dans la portée actuelle. Appliquons la fonction dir() au module de mots-clés et voyons ce qu'elle révèle :


>>> import keyword
>>> dir(keyword)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'iskeyword', 'kwlist', 'main']

type()

La fonction type() nous aide à déterminer si l'objet est une chaîne, un entier ou un autre type d'objet. Il le fait en renvoyant un objet type, qui peut être comparé aux types définis dans le module types :


>>> type(42)<class &#39;int&#39;>
>>> type([])<class &#39;list&#39;>

isinstance()

Un objet peut être testé à l'aide de la fonction isinstance() pour déterminer s'il s'agit d'une instance d'un type spécifique ou d'une classe personnalisée :


>>> isinstance("python", str)
True

Extension de l'utilisation de l'aide dans l'introspection Python :

Ouvrez IDLE de python et entrez dans l'interpréteur python L'interpréteur python lui-même est considéré comme un module principal, puis à l'invite de l'interpréteur >>> Entrez certaines informations que nous voulons connaître, nous allons donc d'abord demander de l'aide, alors entrez help, puis entrez help(), nous entrerons dans l'utilitaire d'aide, puis suivrons les invites de mots-clés, de modules, pour comprendre les mots-clés et les modules Python qui viennent avec Python ou sont également installés et définis par nos soins. Si vous souhaitez quitter, entrez « q » et appuyez sur Entrée.

Si nous voulons connaître un objet (tous les objets en Python peuvent être considérés comme des objets), nous pouvons également demander de l'aide(), mais nous devons entrer le nom de l'objet entre parenthèses au format help (objet), par exemple help(print), puisque l'objet a trop de contenu d'introspection, certains ne collent qu'une partie du contenu.


>>> help
Type help() for interactive help, or help(object) for help about object.
>>> help()

Welcome to Python 3.6&#39;s help utility!

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at https://docs.python.org/3.6/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit".
...
help> keywords

Here is a list of the Python keywords. Enter any keyword to get more help.

False        def         if         raise
None        del         import       return
True        elif        in         try
and         else        is         while
as         except       lambda       with
assert       finally       nonlocal      yield
break        for         not         
class        from        or         
continue      global       pass        

help> modules

Please wait a moment while I gather a list of all available modules...

PIL         base64       idlelib       runpy
__future__     bdb         idna        runscript
__main__      binascii      idna_ssl      sched
_ast        binhex       imaplib       scrolledlist
_asyncio      bisect       imghdr       search
_bisect       browser       imp         
...
Enter any module name to get more help. Or, type "modules spam" to search
for modules whose name or summary contain the string "spam".
>>> help(&#39;print&#39;)
Help on built-in function print in module builtins:

print(...)
  print(value, ..., sep=&#39; &#39;, end=&#39;\n&#39;, file=sys.stdout, flush=False)
  
  Prints the values to a stream, or to sys.stdout by default.
  Optional keyword arguments:
  file: a file-like object (stream); defaults to the current sys.stdout.
  sep:  string inserted between values, default a space.
  end:  string appended after the last value, default a newline.
  flush: whether to forcibly flush the stream.

Tutoriels recommandés : "Tutoriel Python" "Tutoriel Python"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer