江苏网站制作,大数据营销工具,常用的网页开发工具有哪些,上海家装公司十大排名python中yield在函数中的使用
正是因为函数含有这个yield#xff0c;所以#xff0c;该函数不再是普通的函数#xff0c;而是生成器函数#xff08;generator function#xff09;。下面通过小例子来说明一下这个内置函数的特性#xff1a;
1、直接运行函数并不会执行。…python中yield在函数中的使用
正是因为函数含有这个yield所以该函数不再是普通的函数而是生成器函数generator function。下面通过小例子来说明一下这个内置函数的特性
1、直接运行函数并不会执行。
a 0
def add_(initial, k):for i in range(k):initial initial 1print(initial)yield initial
add_(a, 10)
从运行结果发现并没有输出initial的值说明该函数并没有直接调用执行。
2、直接打印该函数会返回一个生成器对象。
print(add_(a, 10))
generator object add_ at 0x000002457504CBA0
3、可通过for循环迭代执行。
a 0
def add_(initial, k):for i in range(k):initial initial 1print(initial)yield initial
add_(a, 4)
print(add_(a, 4))
for j in add_(a, 4):print(j:, j)
generator object add_ at 0x000002A92F81CBA0
1
j: 1
2
j: 2
3
j: 3
4
j: 4Process finished with exit code 0
从输出结果可以得知每次函数执行到yield函数时会终止函数的执行并保留变量initial的值通过for循环再次执行该函数时会从上次执行到的地方跳过yield继续执行。
总结yield 的作用就是把一个函数变成一个 generator带有 yield 的函数不再是一个普通函数Python 解释器会将其视为一个 generator调用 add_(a, 4)不会执行add_函数而是返回一个 iterable 对象。在 for 循环执行时每次循环都会执行 add_函数内部的代码执行到 yield initial 时add_函数就返回一个指定变量的迭代值在示例中这个指定的变量为initial下次迭代时代码从 yield initial的下一条语句继续执行而函数的本地变量看起来和上次中断执行前是完全一样的于是函数继续执行直到再次遇到 yield。
该方法可用于for循环迭代获取数据为模型本身节省了内存空间与运算时间。