Python 3.6-写入随机变量
首先,为标题道歉,我想不出更好的了。我想做的是能够减少代码中if语句的数量。 这是我的密码:Python 3.6-写入随机变量,python,variables,Python,Variables,首先,为标题道歉,我想不出更好的了。我想做的是能够减少代码中if语句的数量。 这是我的密码: if var is "forwardThrustButton": global forwardThrustButton forwardThrustButton = res elif var is "backThrustButton": global backThrustButton backThrustButton = res elif var is "leftRotat
if var is "forwardThrustButton":
global forwardThrustButton
forwardThrustButton = res
elif var is "backThrustButton":
global backThrustButton
backThrustButton = res
elif var is "leftRotateButton":
global leftRotateButton
leftRotateButton = res
elif var is "rightRotateButton":
global rightRotateButton
rightRotateButton = res
elif var is "basicShootButton":
global basicShootButton
basicShootButton = res
elif var is "specialShootButton":
global specialShootButton
specialShootButton = res
elif var is "bombShootButton":
global bombShootButton
bombShootButton = res
正如你所看到的,我这里有很多if语句,使用我放入函数中的字符串,并检查该字符串是什么。这个代码有效。我想做的是能够将变量名传递到函数中,只需说
var=res
。提前谢谢。如果你有一本包含所有这些按钮值的字典,那么你可以轻松地说
buttons["leftRotateButton"] = res
这也会清理你的代码
buttons[var] = res
如果你有一个包含所有这些按钮值的字典,那么你可以很容易地说
buttons["leftRotateButton"] = res
这也会清理你的代码
buttons[var] = res
您可以尝试:
globals()[var] = res
或
取决于作用域上下文。但是这很难看,最好使用字典。你可以试试:
globals()[var] = res
或
取决于作用域上下文。但是这很难看,最好使用字典。首先,使用
=
而不是is
,is
是一种身份测试,你基本上是在检查var
是否是“ForwardPurshButton”
,同样的str
实例。此检查的结果取决于特定Python版本的字符串interning实现。您可以查看以获取有关该主题的更多信息。
除此之外,您可以保留一个dict
,其中所有可能的按钮名称都作为键,按钮作为值,如前所述,或者使用exec(“全局”+var+;“+var+”=res”)
,尽管后者非常难看(但可以完成任务)。首先,使用=
而不是is
,is
是一种身份测试,您基本上是在检查var
是否是的“ForwardPurstButton”
,这与str
实例非常相似。此检查的结果取决于特定Python版本的字符串interning实现。您可以查看以获取有关该主题的更多信息。
除此之外,您可以保留一个dict
,其中所有可能的按钮名称都作为键,按钮作为值,如前所述,或者使用exec(“全局”+var+“;“+var+”=res”)
,尽管后者相当难看(但可以完成任务)。不要使用动态变量,使用字典。你能解释一下为什么你需要一个独立的变量取决于另一个变量吗?这种方法导致的问题是,您永远不知道在某个时间点存在哪些变量。As@juanpa.arrivillaga已经说过:使用字典。请看这里:将字符串与is
进行比较是个坏主意:不要使用动态变量,请使用字典。您能解释一下为什么需要根据另一个变量使用单独的变量吗?这种方法导致的问题是,您永远不知道在某个时间点存在哪些变量。As@juanpa.arrivillaga已经说过:使用字典。请看这里:将字符串与is
进行比较是个坏主意: