dir() é uma função embutida poderosa no Python3, que retorna uma lista dos atributos e métodos de qualquer objeto (digamos funções, módulos, strings, listas, dicionários etc.)

Sintaxe:

dir ({objeto})

Parâmetros:

objeto  [opcional] : recebe o nome do objeto

Retorna:

dir() tenta retornar uma lista válida de atributos do objeto que é chamado. Além disso, a função dir() se comporta de maneira um tanto diferente com diferentes tipos de objetos, pois visa produzir o mais relevante, ao invés da informação completa.



  • Para Class Objects, ele retorna uma lista de nomes de todos os atributos válidos e também atributos básicos.
  • Para objetos Módulos / Biblioteca, ele tenta retornar uma lista de nomes de todos os atributos contidos naquele módulo.
  • Se nenhum parâmetro for passado, ele retorna uma lista de nomes no escopo local atual.

 
Código # 1: com e sem importação de bibliotecas externas.

print(dir()) 
  
  
import random 
import math 
  
print(dir()) 

Resultado :

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
                                          '__name__', '__package__', '__spec__']
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
                         '__name__', '__package__', '__spec__', 'matemática', 'aleatório']

 
Código # 2:

import random 
  
print("The contents of the random library are::") 
print(dir(random)) 

Resultado :

O conteúdo da biblioteca aleatória é:
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Aleatório', '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', 'uniforme',
'vonmisesvariate', 'weibullvariate']

 
Código # 3: o objeto é passado como parâmetros.

geeks = ["geeksforgeeks", "gfg", "Computer Science", 
                    "Data Structures", "Algorithms" ] 
  
d = {}   
print(dir(geeks)) 
  
  
print(dir(d)) 

Resultado :

['__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', 'limpar',
'copiar', 'contar', 'estender', 'índice', 'inserir', 'pop', 'remover', 'reverter', 'classificar']
['__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__', 'limpar', 'copiar', 'das teclas', 'obter', 'itens',
'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 
Código # 4: Definido pelo usuário - objeto de classe com um método __dir() __ disponível é passado como parâmetro.

  
class Supermarket: 
  
    
    
    def __dir__(self): 
        return['customer_name', 'product', 
               'quantity', 'price', 'date'] 
  
  
my_cart = Supermarket() 
print(dir(my_cart)) 

Resultado :

['nome_do_cliente', 'data', 'preço', 'produto', 'quantidade']

 
Formulários :

  • O dir() tem seu próprio conjunto de usos. Geralmente é usado para fins de depuração em programas simples do dia a dia e até mesmo em grandes projetos assumidos por uma equipe de desenvolvedores. A capacidade de dir() de listar todos os atributos do parâmetro passado é realmente útil ao lidar com muitas classes e funções, separadamente.
  • A função dir() também pode listar todos os atributos disponíveis para um módulo / lista / dicionário. Assim, também nos dá informações sobre as operações que podemos realizar com a lista ou módulo disponível, o que pode ser muito útil quando temos pouca ou nenhuma informação sobre o módulo. Também ajuda a conhecer novos módulos mais rapidamente.