首页 > 解决方案 > 在python中分配计数器时递增计数器

问题描述

是否可以在 python 中以某种方式执行以下操作?

nodename = 'node%s' % (++num if ct[0] != 'J' else num)

还是我需要先进行增量并在下一行分配它:

if ct[0] != 'J':
    num += 1
    nodename = 'node%s' % num

标签: python

解决方案


Python 3.8+ 有海象运算符,它允许你在表达式中赋值给一个变量。该表达式var := expr将 的值分配exprvar,并产生相同的值。

这意味着可以在 Python 中通过 . 这会增加,结果是 的新增加值。这似乎是您正在寻找的行为。++varvar := var + 1varvar

在具有这些运算符的语言中,后增量运算符 var++具有不同的行为;它递增var,但表达式的值var++是 的旧的、未递增的值var。从您的代码示例来看,这似乎不是您要寻找的行为,但为了完整起见,它可以在 Python 中通过(var, var := var + 1)[0]. 这将计算一个包含 的旧值var和新值的var元组,然后得到该元组的第一个组件(即旧的、未递增的值)。

也就是说,我建议不要使用前者,强烈建议不要使用后者,因为它在 Python 中非常不习惯。如果你想做两件不同的事情(即增加num和格式化一个字符串),如果你分开做它们会更易读和更容易理解。


推荐阅读