Python中的 dir()函数
目录() 是 Python3 中一个强大的内置函数,它返回任何对象的属性和方法的列表(比如函数、模块、字符串、列表、字典等)
句法 :
dir({object})
参数 :
object [optional] : Takes object name
Returns :
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
# 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())
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))
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))
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))
输出 :
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__spec__']
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__spec__', 'math', 'random']
代码#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))
输出 :
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']
代码#3:对象作为参数传递。
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))
输出 :
['__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
# 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()函数还可以列出模块/列表/字典的所有可用属性。因此,它还为我们提供了有关我们可以使用可用列表或模块执行的操作的信息,这在几乎没有关于模块的信息时非常有用。它还有助于更快地了解新模块。