gpt4 book ai didi

python - 如何将函数的参数作为后缀添加到该函数内的每个变量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:44 25 4
gpt4 key购买 nike

我正在尝试开发一个函数,该函数创建一个包含许多 Tkinter 对象(标签、按钮、旋转框等)的新选项卡。然后将此功能分配给位于根窗口中的许多按钮(以按钮的编号作为功能的参数)。我想要做的是通过在原始名称中添加一个后缀(即函数的参数)来重命名函数体内的变量。此外,其中一个变量是全局变量(用作计数器)。

var_1 = 0
var_2 = 0

def relay_btn(relay_number):
var_n = 'var_' + str(relay_number)
global var_n
vars()[var_n] = 0 + relay_number

relay_btn(1)
relay_btn(2)

print(var_1)
print(var_2)

因此,我希望分别看到 1 和 2,而不是 0。

最佳答案

当您在函数 relay_btn 内调用 vars() 时,您仍然引用该函数范围内的变量。

在这里,我使用 return 将它们返回到全局范围,并在那里分配变量。

#!/usr/bin/env python3

var_1 = 0
var_2 = 0

def relay_btn(relay_number):
var_n = "var_" + str(relay_number)
return var_n, relay_number

var_n, value = relay_btn(1)
vars()[var_n] = value
var_n, value = relay_btn(2)
vars()[var_n] = value

print(var_1)
print(var_2)

在函数中使用动态生成的变量名来完成这一切并不容易。因为你不能将 eval 与赋值一起使用..但我希望我能说服你找到一种不同的方式来完成你正在做的任何事情......这通常被认为是一个坏主意。您是否有理由不能使用旨在存储动态生成的键值关联的数据结构(例如字典)?

#!/usr/bin/env python3

d = {}

d["var_1"] = 0
d["var_2"] = 0

def relay_btn(relay_number, d):
d["var_{}".format(relay_number)] = relay_number

relay_btn(1, d)
relay_btn(2, d)

print(d["var_1"])
print(d["var_2"])

关于python - 如何将函数的参数作为后缀添加到该函数内的每个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com