Python yield关键字



Python 的yield关键字用于创建一个生成器函数。这是一种内存高效的函数类型,可以用作迭代器对象。它是一个区分大小写的关键字。在一个函数中,它返回一个表达式或对象。

函数的yield语句返回一个生成器对象,而不是仅仅将值返回给包含该语句的函数调用。

语法

以下是Pythonyield关键字的语法:

def fun_name():
    statements
	yield expression 

示例

以下是Pythonyield关键字的基本示例:

#defined generator
def fun1():
    yield "Hello"
    yield "Welcome"
    yield "To"
    yield "Tutorialspoint"
    
result_1 = fun1()
print(type(result_1))
#iterating through generator
for i in result_1:
    print(i)

输出

以下是上述代码的输出:

<class 'generator'>
Hello
Welcome
To
Tutorialspoint

使用yield与元组

yield关键字返回可迭代对象,例如元组、列表、集合等。

示例

这里,我们创建了一个名为even的生成器,它将以元组的形式返回偶数。

def even(n):
    for i in range(n):
        if i%2==0:
            yield i
            
even_num = even(20)
print(tuple(even_num))

输出

以下是上述代码的输出:

(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

yield和return的区别

在Python中,returnyield都用于从函数发送值,但它们的操作方式不同。return退出函数并返回单个值或对象,立即终止函数的执行。而yield用于生成器函数中,暂停函数的执行并返回一个值,允许函数在下一次调用时从中断处继续执行。这使得yield非常适合于随时间推移生成一系列值,而return用于单个结果或函数需要结束时。

示例

这里,我们定义了函数和生成器。函数返回单个值,而生成器返回元素列表。

#defined a function
def power(n):
    return n**2
#defined a generator    
def power_1(n):
    for i in range(n):
        yield i**2
		
result_1 = power(4)
result_2 = (list(power_1(4)))
print("Return :", result_1)
print("Yield :", result_2)

输出

以下是上述代码的输出:

Return : 16
Yield : [0, 1, 4, 9]
python_keywords.htm
广告