函数调用中的Python post增量变量

时间:2013-07-17 21:47:07

标签: python tkinter post-increment

前提:我正在尝试在Tkinter中制作一堆按钮,并将它们一个接一个地放在网格布局中。我不想硬编码每个网格值,这样我以后可以轻松添加更多按钮。

我的第一个想法是:

Button(root, text = "example", command = self.example_action).grid(row = count++)

但这不起作用,我做了一些搜索,发现python没有前置或后置增量运算符(Behaviour of increment and decrement operators in Python)。所以我的下一个想法是:

Button(root, text = "example", command = self.example_action).grid(row = count = count + 1)

这给出:SyntaxError:语法无效

除了将我的代码分成两行(使用变量然后在下一行更新)之外,还有一种方法可以在一行中完成所有操作以使我的代码更美观吗?

谢谢,约书亚

2 个答案:

答案 0 :(得分:1)

我想你可以使用发电机。初始化计数如:

count = itertools.count()

然后您可以随心所欲地执行以下操作

Python 2.x:

Button(root, text = "example", command = self.example_action).grid(row = count.next())

Python 3.x:

Button(root, text = "example", command = self.example_action).grid(row = next(count))

但我可能不会

答案 1 :(得分:0)

我想count是一个整数。由于它是不可变的,因此您无法更改其值。换句话说,无论你对函数内部的'row'做什么,函数返回后,'row'的值都不会改变。

>>> row = 2
>>> def plus(i):
...     i = i + 1
...
>>> plus(row)
>>> row
2
>>>

所以我建议你将'row'存储为一个实例变量,这样你就可以通过'self.row + = 1'来改变它的值