2024-03-29 12:21:50 发布
网友
如何在python中执行此操作?你知道吗
a = 0 func(a+=1) # a = 1 func(a+=1) # a = 2
现在我不得不这样解决:
a = 0 a+=1 func(a) a+=1 func(a) ...
一定有更好的办法,对吧?你知道吗
编辑: 实际上,我也想把它传递给不同的函数:
a = 0 a+=1 func1(a) a+=1 func2(a) a+=1 func1(a) ...
您的解决方案是可以的,但是如果您想产生计数副作用,请使用itertools.count对象:
itertools.count
import itertools def f(x): print(x) c = itertools.count() f(next(c)) f(next(c))
或者变量,在函数本身中执行next调用(itertools.counter是可变的,因此您可以在函数内部修改它):
next
itertools.counter
import itertools def f(c): x = next(c) print(x) c = itertools.count() f(c) f(c)
您可以将其初始化为非零值:c = itertools.count(3)
c = itertools.count(3)
你可以有一个包装函数来调用你的函数f,同时增加j的值!你知道吗
f
>>> def f(a):print("Value of a is: %d"%a) ... >>> c=lambda i:(i+1,f(i+1)) >>> j=0 >>> j,_=c(j) Value of a is: 1 >>> j 1 >>> j,_=c(j) Value of a is: 2 >>> j 2
简单地说:
a = 0 a+=1;func1(a) a+=1;func2(a)
每行仅比原始请求长2个字符。你知道吗
您的解决方案是可以的,但是如果您想产生计数副作用,请使用
itertools.count
对象:或者变量,在函数本身中执行
next
调用(itertools.counter
是可变的,因此您可以在函数内部修改它):您可以将其初始化为非零值:
c = itertools.count(3)
你可以有一个包装函数来调用你的函数
f
,同时增加j的值!你知道吗简单地说:
每行仅比原始请求长2个字符。你知道吗
相关问题 更多 >
编程相关推荐