循环结构

伴随着最后几天的编程工作,开始自己着手进行一些大段程序的编写,在此过程中逐渐涉及到一些语法上的精细之处,这边随便写写,权当作个总结。

这一节主要写一写循环结构。python中的循环结构有很多,种类很丰富,用法也各不相同。最常见的有while语句、for语句、迭代语句,甚至再往下还有较为复杂的yield函数。这些语句都有什么不一样的作用?当我们使用这几种循环函数时需要注意什么?如何把多种函数进行混合编写呢?

1.while语句

while语句是几种循环语句里最吓人的,如果处理不当可能会造成死循环。while语句的原理是如果while中语句不满足给定条件,那么会一直循环直到当结果满足当前条件,再跳出循环块。一般的while语句设计为:

while 条件

do something

控制结束条件命令

while语句可以看成一个循环圈,如果不满足条件就无限循环,直到满足为止。因此在设计while语句时一定要仔细看清楚,判断该程序是否具备结束循环的能力,再run test,以减少死循环出现。

2.for语句

for语句是python中使用最广的语句,也是最为常见实用的语句。for语句的原理是挨个依次执行判断条件,一个个地尝试,全面的完成判断条件和程序命令。for循环会访问一个可迭代对象中的所有元素,并在所有条目都处理过后结束循环,他的语法如下:

for iter in iterable:

do something

每一次循环,iter 迭代变量被设置成可迭代对象的当前元素,提供给iterable语句块使用。for语句还可以与其他形式组合,将条件改为在数组中循环,比如:for i in range(n1,n2)  ; for i in xrange(n1,n2) ; for i in [n1,n2,n3,........]

当for和range组合时要注意集合的开闭取值范围,range(n1,n2)为左闭右开区间,即从n1开始取值,到n2-1结束。

3.条件循环组合

现实情况中循环体往往和条件判断一起出现,当我们遇上比较复杂的条件循环组合时,可能单一使用以上两种循环语句就比较混乱,比如:有一个程序,start——>条件A(TRUE)——>执行B——>执行D——>到函数E——>执行F——>到函数G

                                                                                                   

                                                                 (FALSE)——>执行C——>回到条件A

像这样一个条件循环组合程序在编译过程中,不仅仅要做好流程图的设计,而且在结构选择上也要做最优化的思考。当然如果单纯的使用以上两种循环结构也可以进行编写,只是这其中可能会有三重的循环判断嵌套,编译过程中比较容易使人混淆思路,不知道编译进行到哪一个步骤了。此时最好的解决办法就是:使用函数。

yield函数

yield函数简单的说就是传递函数,把上一个函数的值传到下一个函数之中,他可以实现嵌套传值或者自传值。yield函数的基本架构是:

def <函数名> (self,response)    #定义函数 

函数 Model

yield scrapy.Resquest(传递值  吧啦吧啦.......,recall="    self.传递的下一个函数名     ")

这里的self.传递的下一个函数名 可以是一个新的函数名,也可以是这个函数他自身。如果是他自身,那么相当于一次循环。由于

yield函数的思维是正向顺序的,所以在编译过程中比较好理解,也不用考虑上面几块程序的逻辑是否结束。如果我们用yield函数,那么上面那个例子就可以这样来表述:

start——>条件A(TRUE)——>执行B——>执行D——>yield (callback=E)——>执行F——>yield (callback=G)

                                                           

                         (FALSE)——>执行C——>yield (callback=A)

 

 

    

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值