背景信息-我正在制作一个特殊的时钟,它将通过WS2812B像素显示时间并在我学习时学习!
我有一个字典,其中包含要发送给像素的命令,如下所示
hourvalues = {1: "Hour One",
2: "Hour Two"}
etc等最多24并且主文档包含循环:
while True:
print(hourvalues[hour])
sleep(1)
目前,通过打印(作为测试),它的效果非常好,我每秒都会听到一个字。但是,如果我将字典更改为
hourvalues = {1: print("Hour One"),
2: Print("Hour Two")}
和身体到
while True:
hourvalues[hour]
sleep(1)
为了表示将要发送命令而不是打印行的最后一件事,我只得到一个单词,就是这样。
我在做什么错?
这是我的第一篇文章,请保持温柔!谢谢大家
由于在构建字典时调用了print
函数,它将在那时打印出该值,然后将返回值(None
)存储在实际的字典中。
而是要创建一个函数字典,该函数字典将在调用时打印给定的字符串。 lambda
表达式对此有用:
hour_actions = {
1: lambda: print("Hour One"),
2: lambda: print("Hour Two")
}
while True:
hourvalues[hour]()
sleep(1)
注意,您需要使用()
来实际调用该函数!