Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 收益率和回报率有什么不同?_Python_C++_Expression_Rvalue_Lvalue - Fatal编程技术网

Python 收益率和回报率有什么不同?

Python 收益率和回报率有什么不同?,python,c++,expression,rvalue,lvalue,Python,C++,Expression,Rvalue,Lvalue,我经常遇到这个术语,这个函数产生一些东西,或者这个函数返回一些东西。我试图理解这一点,并阅读了几篇python文章。然后我在C++中遇到了同样的语句: 有些表达式产生对象,但返回它们作为右值,而不是左值 有谁能帮助我以独立于语言的方式或详细的方式理解这两个术语,以便我能轻松地掌握它 编辑-如果它们在两种语言中不同,请用两种语言或您知道的任何一种语言进行解释。您是否尝试过迭代整个对象数据库?这是我第一次尝试的,它很快耗尽了我所有的16GB内存,使我的系统瘫痪。这就是生成器存在的原因——根据需要加载

我经常遇到这个术语,这个函数产生一些东西,或者这个函数返回一些东西。我试图理解这一点,并阅读了几篇python文章。然后我在C++中遇到了同样的语句: 有些表达式产生对象,但返回它们作为右值,而不是左值

有谁能帮助我以独立于语言的方式或详细的方式理解这两个术语,以便我能轻松地掌握它


编辑-如果它们在两种语言中不同,请用两种语言或您知道的任何一种语言进行解释。

您是否尝试过迭代整个对象数据库?这是我第一次尝试的,它很快耗尽了我所有的16GB内存,使我的系统瘫痪。这就是生成器存在的原因——根据需要加载数据,而不是一次加载所有数据(可能还有一些其他用途)。试着阅读这篇文章,它有几个例子,将更详细地介绍。

在Python中,
yield
用于。例如:

def func():
    i =0
    while True:
        i += 1
        yield i
如果我没记错Python的话,这应该允许这个函数基本上暂停执行,并一次又一次地被调用。这可以生成一些序列,如
{0,1,2,3…}

另一方面,
return
只返回一个值并结束执行:

def func():
    i =0
    while True:
        i += 1
        return i
这应该总是返回
0
,因为函数完全结束执行,所以每次
i
都超出范围


另一方面,C++没有直接的实数等价于<代码>屈服>代码>(我很清楚地知道(除了添加一个等价物),在这里,它确实有一个等价的(在所有版本中)到<代码>返回< /代码>。当然,它被称为

return

< >,C++可以实现类似于我们的屈服示例:

<>但是,这并不是说静态变量是C++中的代码>收益率< /代码>的替代。只是在C++中,可以用静态变量(在其他的)例子中实现同样的事情。

因此,简而言之,
return
以两种语言结束函数的执行,而
yield
允许函数恢复执行。在C++中,Python的代码< >代码>产量>代码>至少没有。实际上,我不是C++程序员,但我认为它们在Python和C++中不是同一概念。在英语中,“屈服”和“返回”是同义词,在Python <代码>返回< /C> >用于普通函数,当代码>收益率< /代码>用于生成器。C++是否有<代码>收益率<代码>?我认为没有。似乎也没有表明它是这样的。唯一的<代码>收益率<代码>是关于线程的一个,我认为它不与Python中的线程相同。我认为C++ 20将引入<代码> COYORDER 关键字来实现协同程序。@ CHISTER <代码> COYORDION//COD>关键字是新的。它的字面意思不是“屈服”,但委员会很难在不破坏每个人代码的情况下添加新关键字。@martineau谢谢。我还遗漏了什么吗?就像我说的,我的蟒蛇生锈了。谢谢。我在答案中添加了链接——当然,我也读了这更好,还是我仍然需要全局的?不,使用全局的不是一个要求(并且使用像这样的本地的更好)。我再次道歉,并将删除我先前的评论。注意,没有理由在版本中使用
return
进行循环。这一切都很好。确保我的Python是正确的不是你的工作。我真的很感激。
int func() {
    static i = 0;
    return i++;
}