简体   繁体   English

Python无法分配给运算符

[英]Python can't assign to operator

I keep getting SyntaxError: 我不断收到SyntaxError:

can't assign to operator when trying to assign a ID 尝试分配ID时无法分配给操作员

Working Code 工作守则

canvas = self.matrix.CreateFrameCanvas()
graphics.DrawText(canvas, font, LEFT, TOP, setcolor, MESSAGE)
self.matrix.SwapOnVSync(canvas)

What I am trying to achieve 我正在努力实现的目标

ID = "4"
canvas+ID = self.matrix.CreateFrameCanvas()
graphics.DrawText(canvas+ID, font, LEFT, TOP, setcolor, MESSAGE)
self.matrix.SwapOnVSync(canvas+ID)

Error: 错误:

canvas+ID = self.matrix.CreateFrameCanvas()
SyntaxError: can't assign to operator

The operator + is used to concatenate strings, not variable names. 运算符+用于连接字符串,而不是变量名。 although what you want can be done by using eval('canvas'+ID+'= self.matrix.CreateFrameCanvas()') it is a terrible practice, use a list instead. 尽管您可以使用eval('canvas'+ID+'= self.matrix.CreateFrameCanvas()')来完成所需的操作,但这是一种糟糕的做法,请改用列表。

If you want to programatically assign multiple variables like canvas4 and/or canvas5 and so on, you should probably be using a list or dictionary, not multiple variables. 如果要以编程方式分配多个变量,例如canvas4和/或canvas5等,则可能应该使用列表或字典, 而不要使用多个变量。

How about something like: 怎么样:

canvases = {}
ID = 4

canvases[ID] = self.matrix.CreateFrameCanvas()
graphics.DrawText(canvases[ID], font, LEFT, TOP, setcolor, MESSAGE)
self.matrix.SwapOnVSync(canvases[ID])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM