在Python中增加全局变量的优雅方法:
这是我到目前为止所做的:
my_i = -1
def get_next_i():
global my_i
my_i += 1
return my_i
with generator:
my_iter = iter(range(100000000))
def get_next_i():
return next(my_iter)
上课:
class MyI:
MyI.my_i = -1
@staticmethod
def next():
MyI.my_i += 1
return MyI.my_i
最适合他们的是什么?
这些功能的目的是为我的代码中的特定事件分配唯一的编号。代码不仅仅是一个循环,因此使用
for i in range(...):
不适用于此。更高版本可能使用分配给不同事件的多个索引。第一个代码需要重复才能解决这个问题。 (get_next_i()
,get_next_j()
,...)
谢谢。
答案 0 :(得分:3)
您可以创建具有无限循环的生成器。 next(generator)
的每次调用都会返回下一个值,没有限制。见What does the "yield" keyword do in Python?
def create_generator()
i=0
while True:
i+=1
yield i
generator = create_generator()
print(next(generator))
print(next(generator))
答案 1 :(得分:3)
正如其他人所说,itertools.count()
是最好的选择,例如
import itertools
global_counter1 = itertools.count()
global_counter2 = itertools.count()
# etc.
然后,当您需要时,只需致电next
:
def some_func():
next_id = global_counter1.next()