python内置函数 V
Python 解释器内置了很多函数和类型,任何时候都能使用。
V
名称 | 描述 |
---|---|
vars | 返回当前局部符号表的字典。 |
vars()
vars(object)
返回模块、类、实例或任何其它具有 __dict__
属性的对象的 __dict__
属性。
模块和实例这样的对象具有可更新的 __dict__
属性;但是,其它对象的 __dict__
属性可能会设为限制写入(例如,类会使用 types.MappingProxyType
来防止直接更新字典)。
不带参数时,vars()
的行为类似 locals()
。 请注意,locals 字典仅对于读取起作用,因为对 locals 字典的更新会被忽略。
如果指定了一个对象但它没有 __dict__
属性(例如,当它所属的类定义了 __slots__
属性时)则会引发 TypeError
异常。****
# 在全局作用域中
x = 10
y = 20
# vars() 返回全局变量的字典
global_vars = vars()
print(global_vars) # 输出包含 x 和 y 等全局变量的字典
def my_function():
local_x = 5
local_y = 15
# vars() 在函数内部返回局部变量的字典
local_vars = vars()
print(local_vars) # 输出包含 local_x 和 local_y 等局部变量的字典
my_function()
# 在全局作用域中再次调用 vars()
print(vars()) # 仍然输出全局变量的字典
vars()
在函数内部返回的是局部变量的字典,这包括函数参数和函数内部定义的变量。如果你在函数内部修改了通过 vars()
获取的字典,实际上你就是在修改这些局部变量的值。
class MyClass:
def __init__(self):
self.attr = "value"
def print_vars(self):
instance_vars = vars(self)
print(instance_vars) # 输出包含 attr 的实例属性字典
obj = MyClass()
obj.print_vars() # 输出: {'attr': 'value'}
vars()
主要用于获取当前作用域(全局或函数局部)的变量字典,而 locals()
主要用于获取当前执行的代码块的局部变量字典。