Python 是否可以在修改时返回值?

Python 是否可以在修改时返回值?,python,python-3.x,Python,Python 3.x,老实说,我不太容易理解这个问题的标题,基本上有没有一种方法可以修改函数的返回值,同时在同一行中返回它 示例-iterable类的自定义实现 我想替换这个: def __next__(self): if self.count <= 0: raise StopIteration r = self.count self.count -= 1 return r def\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

老实说,我不太容易理解这个问题的标题,基本上有没有一种方法可以修改函数的返回值,同时在同一行中返回它

示例-iterable类的自定义实现

我想替换这个:

def __next__(self):
    if self.count <= 0:
        raise StopIteration
     r = self.count
     self.count -= 1
     return r
def\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果自我计数
或

>a=3
>>>b=(a+=1)
文件“”,第1行
b=(a+=1)
^
SyntaxError:无效语法
在Python中是不可能的


尽管第一个解决方案需要为此时间步存储一个或多个变量(或执行一个或多个操作),但引用:可读性计数。

这是因为
-=
修改变量,并对其执行任何操作(如现在返回的操作)都会引发错误

演示:

>>> a=3
>>> a+(a+=1)
SyntaxError: invalid syntax
>>> # also to show that it does modify the variable:
>>> a=3
>>> a+=1
>>> a
4
>>> 
更新:

>>> a=3
>>> a+(a+=1)
SyntaxError: invalid syntax
>>> # also to show that it does modify the variable:
>>> a=3
>>> a+=1
>>> a
4
>>> 
你做了一个两行:

def f(a):
    if a<=0:raise StopIteration
        a-=1;return a
def(a):

如果aI理解
return foo-=1
是不可能的,那么我想问是否有一种方法可以实现这一点,而不会像我的第一个示例那样冗长。我只是觉得
return foo-=1
很容易阅读,但比后面的“根据实现,它会使必须在内存中保留值r无效”要简单得多,你真的不应该尝试基于这样的推测进行优化。事实上,不,它不会阻止必须在内存中保存该值,即使存在这样的语法。(同样,在我所知道的每种语言中,
返回x-=y
语法存在的地方,返回的值是减法后的值,而不是之前的值。)此外,在Python 3上,方法是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>的。基本上,为什么
val+=I
不能返回它修改后的值呢?在我看来,这应该是可行的。一行被高估了。在Python中,赋值不是表达式,所以不能做这种事情。这是一个经过深思熟虑的设计决定,以防止C语言允许的难以阅读的嵌套赋值。但是,我喜欢这些嵌套赋值。越短越好。不管怎样,我都不在乎,我只是更喜欢在更简单的tasksOk上编写更短的代码,现在这更符合我的喜好,看看这个simplicity@Jaba很乐意帮忙,:-),@Jaba还没有像承诺的那样回复:-),尽管你可以随时回复,lol:D,
>>> a=3
>>> a+(a+=1)
SyntaxError: invalid syntax
>>> # also to show that it does modify the variable:
>>> a=3
>>> a+=1
>>> a
4
>>> 
def f(a):
    if a<=0:raise StopIteration
        a-=1;return a