擅长:python、mysql、java
<p>我认为这称为“函数作为一级值”,这意味着最重要的是,您可以将引用函数作为参数的标识符传递给其他函数。</p>
<p>定义字典时,Python解释器计算函数并将值存储在字典中。若要在生成随机数之前推迟此操作,请尝试将对函数本身的引用存储在字典中,方法是去掉括号:</p>
<pre><code>def random_cube(self):
scramble = { 0 : self.up_turn,
1 : self.down_turn,
2 : self.left_turn,
3 : self.right_turn,
4 : self.front_turn,
5 : self.back_turn,
6 : self.up_turn,
7 : self.down_turn,
8 : self.left_turn,
9 : self.right_turn,
10: self.front_turn,
11: self.back_turn
}
</code></pre>
<p>然后在for循环中调用函数时,必须区分传递参数的正常情况和反转情况:</p>
<pre><code> for x in range(50):
i = random.randint(0,11)
if i <= 5:
scramble[i]()
else:
scramble[i]("inverted")
</code></pre>
<p>或者更简单地说:</p>
<pre><code> for x in range(50):
i = random.randint(0,11)
scramble[i]( () if i < 6 else ("inverted"))
</code></pre>