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