乐趣区

关于debian:Python动态变量名定义与调用方法

在 Python 中,咱们有时会遇到须要动态创建变量名的状况,即在运行时生成变量名。Python 提供了一种办法能够实现这一点,即通过应用内置的 globals() 或 locals() 函数。然而,须要留神的是,动态创建变量并不是一种举荐的做法,因为它可能会导致代码的可读性和可维护性升高。不过,理解这种办法能够帮忙咱们更深刻地了解 Python 的工作原理。

首先,咱们来看一下如何应用 globals() 函数动态创建变量。globals() 函数返回一个字典,该字典示意以后全局符号表,这包含所有导入的模块和定义的函数、类、变量等。咱们能够批改这个字典来动态创建变量。例如:

for i in range(5):
    globals()[f"var{i}"] = i * i

在这个例子中,咱们创立了 5 个变量,名字别离为 var0var1var2var3 和 var4,它们的值别离是 0、1、4、9 和 16。

而后,咱们能够通过间接应用变量名来拜访这些变量:

print(var0)  # 输入:0
print(var1)  # 输入:1
print(var2)  # 输入:4
print(var3)  # 输入:9
print(var4)  # 输入:16

locals() 函数的用法与 globals() 函数相似,但它返回的是以后部分符号表的字典。如果在函数外部应用 locals() 函数,那么它将返回该函数的局部变量。须要留神的是,尽管能够应用 locals() 函数获取局部变量,但批改返回的字典并不能真正扭转局部变量。例如:

def test():
    for i in range(5):
        locals()[f"var{i}"] = i * i
    print(var0)  # NameError: name 'var0' is not defined

test()

在这个例子中,尝试拜访 var0 会导致 NameError,因为批改 locals() 返回的字典并不能真正创立局部变量。

只管 Python 提供了动态创建变量的办法,但通常咱们不举荐这样做。动态创建变量可能会导致代码难以了解和保护,因为咱们不能间接看到所有的变量名。在大多数状况下,应用数据结构(如列表或字典)来存储数据会更好。例如,咱们能够应用字典来代替下面的例子:

vars = {}
for i in range(5):
    vars[f"var{i}"] = i * i

print(vars["var0"])  # 输入:0
print(vars["var1"])  # 输入:1
print(vars["var2"])  # 输入:4
print(vars["var3"])  # 输入:9
print(vars["var4"])  # 输入:16

在这个例子中,咱们创立了一个字典 vars,并应用循环来填充它。而后,咱们能够通过键来拜访字典中的值。这种办法的益处是,咱们能够立刻看到所有的数据都存储在 vars 字典中,而不须要查找多个动态创建的变量。

总的来说,尽管 Python 提供了动态创建变量的办法,但在大多数状况下,应用数据结构来存储数据会更好。如果你的确须要动态创建变量,那么请确保你明确这样做的结果,并尽量使你的代码放弃清晰和可保护。

退出移动版