当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dir()用法及代码示例


dir()是Python3中强大的内置函数,它返回任何对象的属性和方法的列表(例如函数,模块,字符串,列表,字典等)。

用法:

dir({object})

参数:


object [optional]:Takes object name

返回:

dir() tries to return a valid list of attributes of the object it is called upon. Also, dir() function behaves rather differently with different type of objects, as it aims to produce the most relevant one, rather than the complete information.

  • For Class Objects, it returns a list of names of all the valid attributes and base attributes as well.
  • For Modules/Library objects, it tries to return a list of names of all the attributes, contained in that module.
  • If no parameters are passed it returns a list of names in the current local scope.


代码1:有和没有导入外部库。

# 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())

输出:


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



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


代码2:

# 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 random library are::") 
  
# module Object is passed as parameter 
print(dir(random))

输出:

The contents of 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']


代码3:对象作为参数传递。

# When a list object is passed as  
# parameters for the dir() function 
  
# A list, which conatains 
# 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))

输出:

['__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']


代码4:用户定义的-具有可用__dir()__方法的类对象作为参数传递。

# 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))

输出:

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


应用范围:

  • dir()有自己的一套用途。它通常用于简单的日常程序中的调试目的,甚至在由开发人员团队承担的大型项目中也是如此。 dir()列出列出传递的参数的所有属性的函数,在分别处理许多类和函数时确实非常有用。
  • dir()函数还可以列出模块/列表/字典的所有可用属性。因此,它还为我们提供了有关可用列表或模块可以执行的操作的信息,当对模块的了解很少甚至根本没有信息时,这将非常有用。它还有助于更快地了解新模块。


相关用法


注:本文由纯净天空筛选整理自retr0大神的英文原创作品 Python | dir() function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。