2024-05-29 02:42:54 发布
网友
我经常遇到这个词,这个函数产生一些东西或者这个函数返回一些东西。我试图理解这一点,并阅读了一些python的文章。然后我在c++中遇到了同样的语句,它说:
some expressions yield objects but return them as rvalues, not lvalues.
有谁能帮助我独立地或详细地理解这两个术语,以便我能很容易地掌握它。你知道吗
编辑-如果他们在两种语言中是不同的,请解释在这两种或任何一个你知道。你知道吗
在Python中,yield用于generation。例如:
yield
def func(): i =0 while True: i += 1 yield i
如果我没记错Python的话,这应该允许这个函数基本上暂停执行并被反复调用。这会产生一些类似{0,1,2,3...}的序列。你知道吗
{0,1,2,3...}
另一方面,return只返回一个值并结束执行:
return
def func(): i =0 while True: i += 1 return i
这应该总是返回0,因为函数完全结束执行,所以每次i都会超出范围。你知道吗
0
i
另一方面,C++没有直接的实数等价于^ {< CD1>}(我知道)(除了明显的{a2},它是一个等价的),在这里它有一个等价的(在所有版本中)到^ {CD3>}。当然,它被称为return。你知道吗
int func() { static i = 0; return i++; }
但是,这并不是说静态变量是C++中的{{CD1>}的替换。只是在C++中,可以用静态变量(在其他的)例子中实现同样的事情。你知道吗
因此,简而言之,return结束两种语言中函数的执行,而yield允许函数恢复执行。在C++中没有真正的Python ^ {< CD1}},直到至少C++20。你知道吗
你有没有试过迭代对象的整个数据库?这是我第一次尝试的,它很快耗尽了我所有的16GB内存,使我的系统瘫痪。这就是生成器存在的原因——根据需要加载数据,而不是一次加载所有数据(可能还有一些其他用途)。试着阅读this的文章,它有一些例子,会更详细。你知道吗
在Python中,
yield
用于generation。例如:如果我没记错Python的话,这应该允许这个函数基本上暂停执行并被反复调用。这会产生一些类似
{0,1,2,3...}
的序列。你知道吗另一方面,
return
只返回一个值并结束执行:这应该总是返回
0
,因为函数完全结束执行,所以每次i
都会超出范围。你知道吗另一方面,C++没有直接的实数等价于^ {< CD1>}(我知道)(除了明显的{a2},它是一个等价的),在这里它有一个等价的(在所有版本中)到^ {CD3>}。当然,它被称为
<>这是说,C++可以用{{a3}:< /p>来实现与我们的屈服示例类似的东西。return
。你知道吗但是,这并不是说静态变量是C++中的{{CD1>}的替换。只是在C++中,可以用静态变量(在其他的)例子中实现同样的事情。你知道吗
因此,简而言之,
return
结束两种语言中函数的执行,而yield
允许函数恢复执行。在C++中没有真正的Python ^ {< CD1}},直到至少C++20。你知道吗你有没有试过迭代对象的整个数据库?这是我第一次尝试的,它很快耗尽了我所有的16GB内存,使我的系统瘫痪。这就是生成器存在的原因——根据需要加载数据,而不是一次加载所有数据(可能还有一些其他用途)。试着阅读this的文章,它有一些例子,会更详细。你知道吗
相关问题 更多 >
编程相关推荐