función dir() en Python

dir() es una poderosa función incorporada en Python3, que devuelve una lista de los atributos y métodos de cualquier objeto (por ejemplo, funciones, módulos, strings, listas, diccionarios, etc.)
Sintaxis: 
 

dir({object})

Parámetros: 
 

object [optional] : Takes object name

Devoluciones:
dir() intenta devolver una lista válida de atributos del objeto al que se llama. Además, la función dir() se comporta de manera bastante diferente con diferentes tipos de objetos, ya que su objetivo es producir el más relevante, en lugar de la información completa. 
 

  • Para Class Objects, devuelve una lista de nombres de todos los atributos válidos y atributos base también. 
     
  • Para los objetos Módulos/Biblioteca, intenta devolver una lista de nombres de todos los atributos contenidos en ese módulo. 
     
  • Si no se pasan parámetros, devuelve una lista de nombres en el ámbito local actual.

  
Código #1: con y sin importar bibliotecas externas.
 

Python3

# Python3 code to demonstrate dir()
# when no parameters are passed
 
# Note that we have not imported any modules
print(dir())
 
 
# Now let's import two modules
import random
import math
 
# return the module names added to
# the local namespace including all
# the existing ones as before
print(dir())

Producción : 
 

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
                                          '__name__', '__package__', '__spec__']



['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
                         '__name__', '__package__', '__spec__', 'math', 'random']

  
Código #2: 
 

Python3

# Python3 code to demonstrate dir() function
# when a module Object is passed as parameter.
 
# import the random module
import random
 
 
# Prints list which contains names of
# attributes in random function
print("The contents of the random library are::")
 
# module Object is passed as parameter
print(dir(random))

Producción : 
 

The contents of the random library are ::

['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST',
'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence',
'_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__spec__', '_acos', '_ceil', '_cos', '_e', '_exp',
'_inst', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator',
'_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss',
'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint',
'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform',
'vonmisesvariate', 'weibullvariate']

  
Código # 3: el objeto se pasa como parámetros.
 

Python3

# When a list object is passed as
# parameters for the dir() function
 
# A list, which contains
# a few random values
geeks = ["geeksforgeeks", "gfg", "Computer Science",
                    "Data Structures", "Algorithms" ]
 
 
# dir() will also list out common
# attributes of the dictionary
d = {}   # empty dictionary
 
# dir() will return all the available
# list methods in current local scope
print(dir(geeks))
 
 
# Call dir() with the dictionary
# name "d" as parameter. Return all
# the available dict methods in the
# current local scope
print(dir(d))

Producción : 
 

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', 
'__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', 
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', 
'__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']


['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', 
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', 
'__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', 
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', 
'__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 
'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

  
Código n.º 4: definido por el usuario: el objeto de clase con un método __dir()__ disponible se pasa como parámetro. 
 

Python3

# Python3 program to demonstrate working
# of dir(), when user defined objects are
# passed are parameters.
 
 
# Creation of a simple class with __dir()__
# method to demonstrate it's working
class Supermarket:
 
    # Function __dir()___ which list all
    # the base attributes to be used.
    def __dir__(self):
        return['customer_name', 'product',
               'quantity', 'price', 'date']
 
 
# user-defined object of class supermarket
my_cart = Supermarket()
 
# listing out the dir() method
print(dir(my_cart))

Producción : 
 

['customer_name', 'date', 'price', 'product', 'quantity']

  
Aplicaciones: 
 

  • El dir() tiene su propio conjunto de usos. Por lo general, se usa para fines de depuración en programas simples del día a día, e incluso en grandes proyectos asumidos por un equipo de desarrolladores. La capacidad de dir() para enumerar todos los atributos del parámetro pasado es realmente útil cuando se manejan muchas clases y funciones por separado. 
     
  • La función dir() también puede enumerar todos los atributos disponibles para un módulo/lista/diccionario. Por lo tanto, también nos brinda información sobre las operaciones que podemos realizar con la lista o módulo disponible, lo que puede ser muy útil cuando se tiene poca o ninguna información sobre el módulo. También ayuda a conocer nuevos módulos más rápido. 
     

Publicación traducida automáticamente

Artículo escrito por retr0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *