我需要创建和引用大量变量,例如diceOutCome2,diceOutCome4 ... diceOutCome12,diceOutComeHornHigh,diceOutComeHornFive等等,我一直需要引用它们,所以我希望将它们存储为全局变量而不是将它们作为参数传递。
最重要的是,我也尝试不用引号引用它们,而是使用名称或属性如counter.diceOutCome2 ... 2这里不是数字2的结果但是结果用骰子滚动1和1,四会存储骰子总数为2,2,3,3等信息。
创建它们的最有效方法和正确的语法是什么?
def setGlobalVariables():
counter=[]
for i in range (0, 12):
global counter["count_"+i]=0
答案 0 :(得分:3)
对于像“diceOutCome2”这样的属性,实际上最好使用带有索引号的列表,例如counter.diceOutCome[2]
。这使您可以轻松地遍历所有diceOutcomes列表,或者在n为5时将第5个骰子结果之前的结果称为counter.diceOutCome[n-1]
。
Horn bets可以作为对象的方法计算,或者你之前引用的计数器对象(counter.highHorn(5)
可以评估counter.diceOutcome[5]
上的高角投注的赢或输),或者在用于表示掷骰结果的对象上,其列表保存在diceOutCome中,如counter.diceOutcome[5].highHorn()
中所示。或HighHorn
可以是Bet
的子类; HighHorn
的实例是使用DiceOutcome构造的,HighHorn
将实现wins()
方法,在Bet
上以抽象方式定义,在子类中实现 - 将其评估为{ {1}}。由于diceOutcomes都附加到HighHorn(counter.diceOutCome[5]).wins()
,因此这可能是传递给相关方法的逻辑项,或者是用于定义这些方法的逻辑项。
通常,如果您开始考虑使用尾随数字来定义变量名称,例如counter
,something1
,something2
将在您的程序中使用,必须立即停止并替换为名为something3
的列表,并使用somethings
等列表索引访问它们。
(注意 - 为了便于沟通,我使用基于1的索引来对应描述 - 实际上,序列中项目的索引是从0开始的,因此第5项实际上会被引用为somethings[2]
,它之前的项是sequence[4]
sequence [0]`。重点是,这是索引有意义的情况,而不是数字后缀关于变量名。)