如何要求函数在最后一次调用中做一些特定的事情,而不使用for循环中的项的帮助?



我有几个类和函数的复杂代码。其中一个函数被调用了n次我需要在最后一次调用这个函数时做一些特别的事情。使用for循环的可迭代对象太复杂了。我需要知道这是函数的最后一次调用,然后做我想做的事情像这样的

def myfunc (y):X = y*2

如果last_call:X = y*3

是可能的吗?

我试图使用调用函数的for循环中的项,但是因为代码有几个带有几个函数的类,所以它不起作用,因为调用函数有详细的要求,而这些要求与我试图做的相矛盾。由于

函数本身不知道也不应该关心调用它的上下文。如果你想改变行为,你可以通过传递一个适当的参数来实现。

在这种情况下,也许另一个乘数应该是第二个参数;它可以默认为2,但调用者应该负责在适当的时候传递3。

def myfunc(y, z=2):
x = y * z
...

然后可以确定循环中合适的第二个参数

for i in range(10):
myfunc(i, 2 if range < 9 else 3)

或者像

那样重构循环
for i in range(9):
myfunc(i)
myfunc(10, 3)

具体的重构取决于你的用例;这些只是建议。

在更极端的情况下,可能应该有两个不同的函数,由调用者决定调用哪个函数,而不是简单地决定传递什么参数。在这里,可能在(适当缩短的)循环中调用一个函数,在循环完成后调用另一个函数。

使用标志。迭代调用该fun并获得最后一个未更改的标志值。

最新更新