赖勇浩(恋花蝶)的博客

Life is short , you need python .

用户操作
[即时聊天] [发私信] [加为好友]
赖勇浩ID:lanphaday
326416次访问,排名162好友176人,关注者233
网络游戏程序员,略懂python、C++;不太懂网络编程、数据库编程;不懂C语言、3D。
lanphaday的文章
原创 61 篇
翻译 17 篇
转载 12 篇
评论 589 篇
赖勇浩的公告
Google
最近评论
肉包:前两天才看了developWorks上一篇关于元类的文章,快晕了。
沈崴:啊, 好翻译。
zhengyun_ustc:不错,__metaclass__
Test:Just tools.
肉包:这里的博文基本上每篇必看。
文章分类
收藏
    相册
    MetaWeblog API
    编程语言
    TIOBE 流行度
    性能排名
    我创建的开源项目
    VisualPyTune
    友情链接
    CP(图形学)
    DarkSpy
    一刀
    丫头
    沈公,仙人也!
    超哥之奋起版
    风干的绿叶
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 [Python]循环语句中的 else 子句收藏

    新一篇: Pyton 字符串方法详解 | 旧一篇: Python 3.0 beta 1 变化大,更简洁、更统一

      [Python]循环语句中的 else 子句
    有其它编程语言经验的程序员接触到 Python 时最讶异的莫过于无所不在的 else,不仅分枝语句有,而且循环语句也有,甚至连异常处理也有。但现在我们来看看循环语句中的 else,看看它们的语法:
    while_stmt ::=
                 "while" expression ":" suite
                    ["else" ":" suite]
    for_stmt ::=
                 "for" target_list "in" expression_list
                  ":" suite
                    ["else" ":" suite]
     
    要谈 else 分句,必须要知道 Python 从 C 语言中借来了语义相同的 break 和 continue 语句,因为 else 分句提供了隐含的对循环是否由 break 语句引发循环结束的判断。先来看一个没有应用 else 子句的例子:
    >>> def print_prime(n):
    ...     for i in xrange(2, n):
    ...             found = True
    ...             for j in xrange(2, i):
    ...                     if i % j == 0:
    ...                             found = False
    ...                             break
    ...             if found:
    ...                     print '%d is a prime number'%i
    这是一个查找素数的简单实现,可以看到我们借助了一个标志量 found 来判断是循环结束是不是由 break 语句引起的,如果对 else 善加利用,代码可以简洁得多:
    >>> def print_prime2(n):
    ...     for i in xrange(2, n):
    ...             for j in xrange(2, i):
    ...                     if i % j == 0:
    ...                             break
    ...             else:
    ...                     print '%d is a prime number'%i
    当循环“自然”终结(循环条件为假)时 else 从句会被执行一次,而当循环是由 break 语句中断时,else 从句就不被执行。
     
    与 for  语句相似,while 语句的else 子句的语意是一样的。else 块在循环正常结束和循环条件不成立时执行。
     
    与 C/C++ 等较为“老土”的语言相比,else 子句使程序员的生产力、和代码的可读性都得到了提高。尽管如此,我见过的代码中使用 else 子句的情况并不多,大概是因为大家都习惯了 C 式的标志量解决方案,我建议大家多使用 else。
    最后八卦一下,如果在 python 中想直接退出多重循环,你应该使用异常,python 不提供 goto。关于异常,下次我们再来聊聊。

    发表于 @ 2008年06月23日 22:58:00|评论(loading...)|编辑

    新一篇: Pyton 字符串方法详解 | 旧一篇: Python 3.0 beta 1 变化大,更简洁、更统一

    评论

    #A.TNG 发表于2008-06-24 15:43:10  IP: 10.194.64.*
    都一次看到这种else用法,长见识了。
    2008-06-24 23:33:25作者回复
    python 有许多语法糖来使得代码更容易理解。
    #ArenAK 发表于2008-06-25 07:40:23  IP: 219.239.227.*
    确实这样的else大家用的不多,因为这个用法与其它语言不太一样,所以写出来会稍稍降低程序的易理解性吧:)
    2008-06-25 09:36:01作者回复
    其实这算是基本的语法,值得 pythoner 花一点时间去学习、理解、记忆的。
    #sheep 发表于2008-06-27 11:41:53  IP: 218.107.55.*
    长见识了。。
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 赖勇浩