Python 内建函数列表 > Python 的内置函数 vars
Python 的内置函数 vars() 是一个非常有用的工具函数,主要用于返回对象的 __dict__ 属性。它可以应用于模块、类、实例以及其他具有 __dict__ 属性的对象。以下是关于 vars() 函数的详细说明:
基本用法
- 不带参数调用:
当vars()不带参数调用时,它等同于locals()函数,返回当前局部作用域的符号表(通常是当前函数的局部变量)。def example(): x = 10 y = 20 print(vars()) # 输出 {'x': 10, 'y': 20} example() - 带参数调用:
当使用参数调用时,vars(obj)会返回对象obj的__dict__属性,该属性通常是一个字典,存储了对象的属性和值。class MyClass: def __init__(self): self.a = 1 self.b = 2 obj = MyClass() print(vars(obj)) # 输出 {'a': 1, 'b': 2}
适用对象
- 模块:
vars()可以返回模块的全局变量字典。import math print(vars(math)) # 输出 math 模块的所有属性和函数 - 类和实例:对于类和实例,
vars()返回其__dict__属性。class Example: class_attr = "class value" def __init__(self): self.instance_attr = "instance value" print(vars(Example)) # 输出类的命名空间,包括 class_attr obj = Example() print(vars(obj)) # 输出实例的命名空间,如 instance_attr - 其他对象:如果对象没有
__dict__属性,vars()会抛出TypeError异常。print(vars(10)) # TypeError: vars() argument must have __dict__ attribute
注意事项
__dict__可变性:由于vars()返回的是对象的__dict__,因此对返回的字典进行修改会影响原对象。obj = MyClass() d = vars(obj) d['c'] = 3 # 这会动态添加一个新属性到 obj print(obj.c) # 输出 3-
与
dir()的区别:vars()返回的是对象的属性和值,而dir()返回的是对象的所有属性和方法名称列表(包括继承的)。 - 动态属性管理:
vars()常用于动态检查或修改对象的属性,特别是在元编程或调试时。
应用场景
- 调试:快速检查对象的属性和值。
- 动态编程:运行时动态添加或修改对象属性。
- 序列化:获取对象的状态字典以便序列化存储。
vars() 是一个强大但需要谨慎使用的工具,合理使用可以简化代码,但过度依赖可能会降低代码的可读性和可维护性。