python 中locals() 和 globals()

1. 了解locals()和globals()函数

在Python中,locals()和globals()是两个内置函数,用于获取当前作用域的局部变量和全局变量。

locals()函数返回一个包含当前作用域中所有局部变量和它们对应值的字典。它可以在任何函数中调用,包括全局作用域。例如:

def my_function():

x = 10

y = "hello"

print(locals())

my_function()

运行结果:

{'x': 10, 'y': 'hello'}

globals()函数与locals()函数类似,但它返回的是全局作用域中的变量和它们对应值的字典。例如:

x = 10

y = "hello"

def my_function():

print(globals())

my_function()

运行结果:

{'x': 10, 'y': 'hello', 'my_function': <function my_function at 0x000001>, ...}

正文中提到的temperature=0.6,是一个变量赋值的示例。我们可以使用locals()和globals()函数来查看该变量在不同作用域中的值。

2. 使用locals()和globals()查看变量值

假设我们在Python代码中定义了一个变量temperature,并赋值为0.6:

temperature = 0.6

def my_function():

temperature = 0.8

print(locals())

print(globals()["temperature"])

my_function()

运行结果:

{'temperature': 0.8}

0.6

可以看到,在函数内部使用locals()函数打印出的字典中,temperature的值为0.8,即局部变量的值。而使用globals()函数获取的全局变量temperature的值为0.6。

这是因为函数内部的temperature变量属于局部作用域,它会覆盖同名的全局变量。当我们在函数内部使用locals()函数查看变量时,只能获取到局部变量的值。而使用globals()函数获取到的是全局变量。

3. 修改局部变量和全局变量的值

通过locals()和globals()函数,我们还可以修改局部变量和全局变量的值。

以下示例演示了如何修改局部变量和全局变量:

x = 10

def my_function():

x = 5

locals()["x"] = 15

globals()["x"] = 20

my_function()

print(x)

运行结果:

20

可以看到,通过locals()函数修改局部变量的值并不会影响到实际的局部变量。而通过globals()函数修改全局变量的值则会对全局变量产生实际影响。

注意:虽然可以使用locals()和globals()函数来修改变量的值,但这并不是一个良好的编程实践。应该尽量避免在代码中使用它们来修改变量。

4. 总结

本文介绍了Python中locals()和globals()函数的使用。这两个函数可以用于获取当前作用域的局部变量和全局变量,并且可以通过它们修改变量的值。但是,修改变量的值应该尽量避免使用这些函数,以避免代码的可读性和维护性问题。

后端开发标签