伴随着最后几天的编程工作,开始自己着手进行一些大段程序的编写,在此过程中逐渐涉及到一些语法上的精细之处,这边随便写写,权当作个总结。
这一节主要写一写循环结构。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)
1471

被折叠的 条评论
为什么被折叠?



