收益率和回报率有何不同?

2024-05-29 02:42:54 发布

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

我经常遇到这个词,这个函数产生一些东西或者这个函数返回一些东西。我试图理解这一点,并阅读了一些python的文章。然后我在c++中遇到了同样的语句,它说:

some expressions yield objects but return them as rvalues, not lvalues.

有谁能帮助我独立地或详细地理解这两个术语,以便我能很容易地掌握它。你知道吗

编辑-如果他们在两种语言中是不同的,请解释在这两种或任何一个你知道。你知道吗


Tags: 函数returnobjectsas文章notsome语句
2条回答

在Python中,yield用于generation。例如:

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++没有直接的实数等价于^ {< CD1>}(我知道)(除了明显的{a2},它是一个等价的),在这里它有一个等价的(在所有版本中)到^ {CD3>}。当然,它被称为return。你知道吗

<>这是说,C++可以用{{a3}:< /p>来实现与我们的屈服示例类似的东西。
int func() {
    static i = 0;
    return i++;
}

但是,这并不是说静态变量是C++中的{{CD1>}的替换。只是在C++中,可以用静态变量(在其他的)例子中实现同样的事情。你知道吗


因此,简而言之,return结束两种语言中函数的执行,而yield允许函数恢复执行。在C++中没有真正的Python ^ {< CD1}},直到至少C++20。你知道吗

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

相关问题 更多 >

    热门问题