本系列将会陆续整理分享一些的Python内置函数。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_built-in_functions
locals()
下面是一些使用 locals() 函数的示例:
-
示例1:跟踪函数当前局部作用域中的变量
locals()函数返回的是一个字典,包含当前局部作用域中的所有变量和它们的值。
def my_function():
a = 1
b = "hello"
print(locals())
my_function()
# 输出:{'a': 1, 'b': 'hello'}
def complex_function(a, b):
result = a + b
print(locals())
complex_function(5, 7)
# 输出:{'a': 5, 'b': 7, 'result': 12}
-
示例2:在函数内部动态修改变量
locals()返回的字典是只读的,因此尝试直接修改这个字典并不会生效。
虽然可以使用locals()动态添加变量,但这种做法通常不推荐,因为它可能会导致不可预测的行为。
def my_function():
a = 10
b = 20
print(locals()) # 输出当前作用域内的局部变量及其值
# 尝试修改 locals() 返回的字典
locals()['b'] = 30 # 修改变量
locals()['c'] = 50 # 动态添加变量
print(locals()) # 再次输出,查看修改后的局部变量
my_function()
# 输出:{'a': 10, 'b': 20}
# {'a': 10, 'b': 20, 'c': 50}
-
示例3:在嵌套函数中使用
locals() 返回的变量仅限于当前作用域内的局部变量,无法访问全局变量。对于全局变量,可以使用 globals() 函数。
def outer():
a = 1
def inner():
b = 2
print(locals()) # 仅限于当前作用域内
inner()
outer()
# 输出:{'b': 2}
-
示例4:结合装饰器使用:
装饰器可以结合locals()使用,来检查或修改被装饰函数的局部变量。
def debug(func):
def wrapper(*args, **kwargs):
local_vars = locals()
print('Arguments:', local_vars)
result = func(*args, **kwargs)
print('Return Value:', result)
return result
return wrapper
# 装饰器
@debug
def add(x, y):
return x + y
add(3, 4)
# 输出:Arguments: {'args': (3, 4), 'kwargs': {}, 'func': <function add at 0x000001DD2CA4D3A0>}
# Return Value: 7


本篇文章来源于微信公众号: 码农设计师