千家信息网

Python yield语法的使用分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Python yield语法的使用分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。# 例一开始: ------------------
千家信息网最后更新 2026年11月01日Python yield语法的使用分析

Python yield语法的使用分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。


# 例一开始: ---------------------------------------------------------------------------------------------------------------------

def test_yield1():

print 'I am make test_yield1 function as a iterator...'

yield


#直接调用test_yield1()

test_yield1()

#没有输出结果,原因是执行test_yield1()函数只是构造了一个迭代器,

# 相当于只写了个for循环,没有写for循环的代码逻辑

# 迭代方法1:

for i in test_yield1():

pass

#发现有输出了,这是因为test_yield1函数中有yield字段,因此test_yield1函数变成了一个

# 可迭代的生成器constructor,所以用迭代的方法能使之输出结果。

# 迭代方法2:

it = test_yield1()

it.next()

迭代方法1、迭代方法2的执行结果都一样:


#但是使用下面方式则会报错

it = test_yield1()

it.next()

it.next()

#报错StopIteration,这是因此yield只构造了一次迭代对象,所以执行第二次时候,已经没有可迭代的元素了,所以报错

# 例一结束:---------------------------------------------------------------------------------------------------------------------

# 例二开始:---------------------------------------------------------------------------------------------------------------------

#接上面例一,制造一个二次迭代的函数对象:

def test_yield2():

print 'I am test_yield2 and execute once yiled...'

yield

print 'I am test_yield2 and execute twice yiled...'

yield

#直接执行一样没有输出

test_yield2()

# 迭代方法1:

for i in test_yield2():

pass

# 迭代方法2:

t = test_yield2()

t.next()

t.next()


迭代方法1、迭代方法2的执行结果都一样:


# 例二结束:---------------------------------------------------------------------------------------------------------------------


从上述例一、例二可以知道,函数中若有yield则该函数会被特地编译成生成器、函数就是一个可以供迭代使用的对象。


下面来看一个openstack中使用的实例编程的例子:


初看不是很好理解,接下来,模拟一个demo:

#coding=utf-8

# 例三开始:---------------------------------------------------------------------------------------------------------------------

def test_yield3(num_list):

for num in num_list:

if num%2 == 0:

yield num


num_list = [1,2,3,4,5,6]

t = test_yield3(num_list)


print t


for i in t:

print i


结果:

# 例三结束:---------------------------------------------------------------------------------------------------------------------


例三通过yield语法,返回了一个只包含偶数的可迭代生成器对象。因此关于openstack中的例子也很容易理解,

就是将self._filter_one(obj, filter_properties)值为true的obj加入到迭代对象中。这样就完成了对hosts的过滤。

看完上述内容,你们掌握 Python yield语法的使用分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

迭代 方法 函数 对象 结果 输出 语法 生成器 生成 分析 例子 内容 原因 就是 更多 这是 问题 循环 束手无策 为此 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蓝思科技飞鸽互联网 北京路客互联网科技有限公司 美国互联网科技巨头监管 互联网 科技创新 喔噻互联网科技 互联网科技缩写 互联网养老 桔豆科技 深圳卡尔迅互联网科技有限公司怎么样 卫星互联网科技股票 互联网科技与管理 健康食品互联网创新科技园项目 特约风豹互联网科技为什么扣费 每天都有哪些好的互联网科技 郑州欣桑互联网科技有限公司 昆明中奇联合互联网科技 美国五大互联网科技公司市值多少 北京品多多互联网科技有限公司 现代科技的标志之一的互联网 互联网科技创业有什么好项目 每日互联网科技新闻 互联网加科技 汇久创客互联网科技 易通互联网络科技有限公司 互联网金融科技委员会 互联网公司会议桌创意科技软装饰 农村开互联网科技讲堂 哈尔滨新华互联网科技学院 科技互联网的估值 黑科技闪耀互联网之光 互联网科技创业计划的风险分析
0