vars() 返回对象的属性字典(__dict__),无参数时等价于 locals()。
语法
vars([object])
- 有参数:返回
object.__dict__
- 无参数:返回当前作用域局部变量字典
使用场景
获取实例属性
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
vars(p) # {'name': 'Alice', 'age': 25}
修改属性
vars(p)["age"] = 26 # 同步修改 p.age
获取模块属性
import math
vars(math) # {'pi': 3.14..., 'sqrt': <function>, ...}
获取局部变量
def test():
a, b = 10, "hello"
vars() # {'a': 10, 'b': 'hello'}
# 等价于 locals()
vars() vs dir()
| 函数 | 返回值 |
|---|
vars() | 属性-值字典 |
dir() | 属性名列表 |
vars(p) # {'name': 'Alice'}
dir(p) # ['__class__', 'name', ...]
注意
- 并非所有对象都有
__dict__:int、str 等内置类型会报 TypeError
- 局部变量字典只读:修改
vars() 返回的字典不影响实际局部变量
- 只读
__dict__:部分对象的属性字典不可修改