传递一个随调用而增加的变量?

2024-03-29 12:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在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)
...

Tags: 函数编辑func办法func2func1
3条回答

您的解决方案是可以的,但是如果您想产生计数副作用,请使用itertools.count对象:

import itertools

def f(x):
    print(x)

c = itertools.count()
f(next(c))
f(next(c))

或者变量,在函数本身中执行next调用(itertools.counter是可变的,因此您可以在函数内部修改它):

import itertools

def f(c):
    x = next(c)
    print(x)

c = itertools.count()
f(c)
f(c)

您可以将其初始化为非零值:c = itertools.count(3)

你可以有一个包装函数来调用你的函数f,同时增加j的值!你知道吗

>>> 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个字符。你知道吗

相关问题 更多 >