c语言编程笔录

首页 >   > 笔记大全

笔记大全

python里dir的用法python dir函数的作用

更新时间:2023-07-10

dir是python里的一个内置函数

dir函数可以无需参数, 用来列出当前作用域中所有的名字。并且以一个列表的形式返回。

    
        # 例1:
        dir()
        
        # output:
        []  # 表示当前作用域中没有任何变量和函数

        # 例2:
        num = 1
        def test():
            pass
        print(dir())

        # output:
        ['__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'num', 'test']
    

dir的参数

dir函数的参数是可选的。当传入参数时,它以一个字符串作为参数,它会返回该对象所拥有的属性, 方法以及类。如果dir函数的参数不是字符串,会引发TypeError。

    
        # 例1:
        print(dir(list))

        # output:
        ['__add__',
         '__class__',
         '__contains__',
         '__delattr__',
         '__delitem__',
         '__dir__',
         '__doc__',
         '__eq__',
         '__format__',
         '__ge__',
         '__getattribute__',
         '__getitem__',
         '__gt__',
         '__hash__',
         '__iadd__',
         '__imul__',
         '__init__',
         '__init_subclass__',
         '__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']
        
        # 例2:
        str = "hello world"
        print(dir(str))
        
        # output:
        ['__add__',
         '__class__',
         '__contains__',
         '__delattr__',
         '__dir__',
         '__doc__',
         '__eq__',
         '__format__',
         '__ge__',
         '__getattribute__',
         '__getitem__',
         '__getnewargs__',
         '__gt__',
         '__hash__',
         '__init__',
         '__init_subclass__',
         '__iter__',
         '__le__',
         '__len__',
         '__lt__',
         '__mod__',
         '__mul__',
         '__ne__',
         '__new__',
         '__reduce__',
         '__reduce_ex__',
         '__repr__',
         '__rmod__',
         '__rmul__',
         '__setattr__',
         '__sizeof__',
         '__str__',
         '__subclasshook__',
         'capitalize',
         'casefold',
         'center',
         'count',
         'encode',
         'endswith',
         'expandtabs',
         'find',
         'format',
         'format_map',
         'index',
         'isalnum',
         'isalpha',
         'isascii',
         'isdecimal',
         'isdigit',
         'isidentifier',
         'islower',
         'isnumeric',
         'isprintable',
         'isspace',
         'istitle',
         'isupper',
         'join',
         'ljust',
         'lower',
         'lstrip',
         'maketrans',
         'partition',
         'removeprefix',
         'removesuffix',
         'replace',
         'rfind',
         'rindex',
         'rjust',
         'rpartition',
         'rsplit',
         'rstrip',
         'split',
         'splitlines',
         'startswith',
         'strip',
         'swapcase',
         'title',
         'translate',
         'upper',
         'zfill']
    

dir函数的一些应用举例

应用一:查看可用模块或者包

    
        import sys
        sys.path.append("/usr/local/python36/lib/python3.6/")  # linux系统下添加python模块的环境
        
        import distutils 
        print(dir(distutils))
        
        # output:
        ['DistutilsPlatformError', 'DistutilsByteCompileError',
         'DistutilsExecError', 'DistutilsFileError', 'DistutilsInternalError',
         'DistutilsOptionError', 'DistutilsSetupError', 'DistutilsModuleError',
         'DistutilsClassError', 'DistutilsModuleInfo', 'DistutilsVersionSelector',
         'spawn', 'log', 'log_warn', 'log_error', 'log_info', 'core', 'sysconfig',
         'dist', 'emxccompiler', 'msvccompiler', 'ccompiler', 'cygwinccompiler',
         'unixccompiler', 'command', 'config', 'errors', 'filelist', 'archive_util',
         'distutils_path', 'dep_util', 'dir_util', 'file_util', 'text_file', 'version',
         '__version__', '__revision__', 'debug', '_backport_shutil_get_terminal_size',
         '_msvccompiler', '_cl', '_makefile', '_distutils_gen_analysis',
         '_distutils_findvs', '_spawn', '_get_build_platform', 'i18n', '_os',
         '__all__', '__doc__', '__file__', '__name__', '__package__', '__path__']
    

应用二:查看对象可以调用的方法

    
        class Test:
          def __init__(self):
            self.a = 10
        
          def show(self):
            print(self.a)
        
        t = Test()
        print(dir(t))
         
        # output:
        ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__',
         '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__',
         '__init__', '__init_subclass__', '__le__', '__lt__', '__module__',
         '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
         '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a', 'show']
    

应用三:查看内置模块或者内置函数

    
        import builtins
        print(dir(builtins))

        # output: 
        ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',
         'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError',
         'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError',
         'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception',
         'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError','GeneratorExit',
         'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError',
         'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt',
         'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError',
         'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError',
         'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError',
         'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration',
         'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
         'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
         'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning',
         'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError',
         '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__',
         '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin',
         'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod',
         'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir',
         'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format',
         'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id',
         'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license',
         'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct',
         'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed',
         'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum',
         'super', 'tuple', 'type', 'vars', 'zip']
    

总结:

dir函数是python内置的一个函数,可以返回当前作用域或对象的所有属性、方法和类信息。如果没有参数,则返回当前作用域的所有名字。

在实际开发中,我们可以用dir函数快速地查看模块、包、内置函数、对象可以调用的方法信息。

同时,dir函数的返回值为一个列表,我们可以通过遍历这个列表来获取里面的元素。

如果将dir函数和其他库函数或语句结合使用,可以提高代码效率和编码速度。