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(自省)方面非常有用。