Python(vars())



1. 函数简介

vars() 是 Python 内置函数之一,用于返回对象的 __dict__ 属性,即对象的属性和值组成的字典。如果不传参数,vars() 返回当前作用域(局部命名空间)中的变量字典。



2. 函数签名

vars([object])
  • object(可选):可以是模块、类实例或其他具有 __dict__ 属性的对象。
  • 返回值:
    • 如果传入对象,则返回该对象的字典;
    • 如果不传参数,则返回当前局部作用域的变量字典。


3. 使用场景

3.1 获取对象的属性字典

vars() 可用于查看一个对象的所有可访问属性和值,适用于类实例。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person("Alice", 25)
print(vars(p))

输出:

{'name': 'Alice', 'age': 25}

等价于:

print(p.__dict__)

3.2 获取当前作用域中的变量

如果 vars() 不带参数,则返回当前作用域的变量字典:

a = 10
b = "hello"
print(vars())

输出:

{'a': 10, 'b': 'hello', ...}

3.3 用于模块

可以获取模块的 __dict__ 以查看其所有全局变量和函数:

import math
print(vars(math))

这将返回 math 模块中的所有可用函数和常量。


3.4 用于调试

可以在调试时打印 vars() 以查看变量状态:

def test():
    x = 42
    y = "test"
    print(vars())  # 获取函数局部变量
test()

输出:

{'x': 42, 'y': 'test'}


4. 注意事项

  • 只有具备 __dict__ 属性的对象(如普通类实例)才能使用 vars(),否则会抛出 TypeError

    print(vars(10))  # TypeError: vars() argument must have __dict__ attribute
    
  • 对于 vars() 返回的字典,可以直接修改值,但不会影响 __dict__ 不存在的特殊对象属性。



5. 总结

  • vars(object) 相当于 object.__dict__,返回对象的属性字典。
  • vars()(无参数)返回当前作用域的变量字典。
  • 适用于类实例、模块、调试代码等场景。

这个函数在调试、动态修改对象属性以及 introspection(自省)方面非常有用。



posted @ 2025-03-03 14:25  做梦当财神  阅读(22)  评论(0)    收藏  举报