|
Size: 224
Comment:
|
Size: 3839
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| ||'''status'''|| 草稿 || HuangYi || 0%|| | ##language:zh #format rst |
| Line 3: | Line 4: |
| [[TableOfContents]] | .. contents:: |
| Line 5: | Line 6: |
| = 过程控制 = | :status: 草稿 ;HuangYi; 10%; |
| Line 7: | Line 8: |
| == if 分支 == === 布尔操作 === |
=================== Python过程控制 =================== |
| Line 10: | Line 12: |
| == for 循环 == | python 向来秉承简洁的设计原则,在语法的设计上体现得尤为明显! 稍有编程经验的朋友对下面这些语法应当不会陌生。 |
| Line 12: | Line 15: |
| == while 循环 == | 对于许多读者来说,可能只需要注意两点,本章的内容就可以飞快得浏览过去了: 一是 python 以缩进控制作用范围并且缩进都以冒号开头; 二是所有这些过程控制语句都可以跟个 ``else`` 子句! ``if`` 语句后面跟 ``else`` 自不必说,连 ``for`` 、 ``while`` 语句也可以跟 ``else`` 子句! TODO: 关于不同语句中的 ``else`` |
| Line 14: | Line 21: |
| == 异常处理 == | if 分支 ========= |
| Line 16: | Line 24: |
| = 讨论 = [[PageComment2]] |
:: if a == b: print 'a 等于 b' else: print 'a 不等于 b' 也许你还需要更细致地控制: :: if a == b: print 'a 等于 b' elif a < b: print 'a 小于 b' elif a > b: print 'a 大于 b' else: print '在本宇宙中这是不可能滴!' ``elif`` 就是 else if 的缩写。 python 没有 switch 语句,因为觉得没必要,原因之一是 if elif else 已经足以应付大部分情况。 况且对于很大一部分其他的 switch 应用场景,python 还有更加优雅的方式来处理,请看: :: # 伪码 switch( sys.argv[1] ): case '-e': walk_cd() case '-d': search_cd() ... default: raise CommandException("Unknown Commend: " + sys.argv[1]) # 使用 if 替代 if sys.argv[1]=='-e': walk_cd() elif sys.argv[1]=='-d': search_cd() ... else: raise CommandException("Unknown Command: " + sys.argv[1]) # 更好的做法 commands = { '-e' : walk_cd, '-d' : search_cd, } try: commands[ sys.argv[1] ]() except KeyError: raise CommandException("Unknown Command: " + sys.argv[1]) 还记得上一章 python 数据类型中的习题 1 吗?我们要求读者用 and 和 or 操作符模拟 c 语言的 ? : 三元操作符。 实际上在 python2.5 以前,这确实是一个还算实用的技巧,不过 python2.5 中应广大 python 程序员的强烈呼吁, 终于加入了新的语法,终于可以用更优美的方式表达这种常用分支: TODO: 换成更有实际意义的例子 :: a = b*2 if b else default_value 等价于: :: if b: a = b*2 else: a = default_value 用 and or 技巧也可以写成: :: a = b and b*2 or default_value 显然是第一种写法看起来最顺眼了。 for 循环 ========= :: for item in some_list: do something with item python 的 for 与 c 的 for 不同,要类比的话,大家可以想象一下某些语言的 foreach 。 python 只支持这一种 for 语句,而没有类似 c 的 for 语句, 因为用这种 for 语句很容易就可以模仿出 c 那种类型的 for 语句 (还记得上一章的习题2吧,对,就是它:range ;-): :: # 伪码,c 类型的 for 语句: for(i=0;i<10;i++): ... # python 等价物: for i in range(10): ... .. topic:: Under the hood :: for item in some_list: do some thing with item 实际上等价于: :: iterator = iter(some_list) try: item = iterator.next() do some thing with item item = iterator.next() do some thing with item ... except StopIteration: pass 也就是说 for in 操作的是任意的迭代器! TODO: 关于迭代器! while 循环 ============ 异常处理 ============ 小结 ========== 练习 =========== .. macro:: [[PageComment2(nosmiley=1, notify=1)]] |
.. contents::
:status: 草稿 ;HuangYi; 10%;
===================
Python过程控制
===================
python 向来秉承简洁的设计原则,在语法的设计上体现得尤为明显!
稍有编程经验的朋友对下面这些语法应当不会陌生。
对于许多读者来说,可能只需要注意两点,本章的内容就可以飞快得浏览过去了:
一是 python 以缩进控制作用范围并且缩进都以冒号开头;
二是所有这些过程控制语句都可以跟个 ``else`` 子句!
``if`` 语句后面跟 ``else`` 自不必说,连 ``for`` 、 ``while`` 语句也可以跟 ``else`` 子句!
TODO: 关于不同语句中的 ``else``
if 分支
=========
::
if a == b:
print 'a 等于 b'
else:
print 'a 不等于 b'
也许你还需要更细致地控制:
::
if a == b:
print 'a 等于 b'
elif a < b:
print 'a 小于 b'
elif a > b:
print 'a 大于 b'
else:
print '在本宇宙中这是不可能滴!'
``elif`` 就是 else if 的缩写。
python 没有 switch 语句,因为觉得没必要,原因之一是 if elif else 已经足以应付大部分情况。
况且对于很大一部分其他的 switch 应用场景,python 还有更加优雅的方式来处理,请看:
::
# 伪码
switch( sys.argv[1] ):
case '-e':
walk_cd()
case '-d':
search_cd()
...
default:
raise CommandException("Unknown Commend: " + sys.argv[1])
# 使用 if 替代
if sys.argv[1]=='-e':
walk_cd()
elif sys.argv[1]=='-d':
search_cd()
...
else:
raise CommandException("Unknown Command: " + sys.argv[1])
# 更好的做法
commands = {
'-e' : walk_cd,
'-d' : search_cd,
}
try:
commands[ sys.argv[1] ]()
except KeyError:
raise CommandException("Unknown Command: " + sys.argv[1])
还记得上一章 python 数据类型中的习题 1 吗?我们要求读者用 and 和 or 操作符模拟 c 语言的 ? : 三元操作符。
实际上在 python2.5 以前,这确实是一个还算实用的技巧,不过 python2.5 中应广大 python 程序员的强烈呼吁,
终于加入了新的语法,终于可以用更优美的方式表达这种常用分支:
TODO: 换成更有实际意义的例子
::
a = b*2 if b else default_value
等价于:
::
if b:
a = b*2
else:
a = default_value
用 and or 技巧也可以写成:
::
a = b and b*2 or default_value
显然是第一种写法看起来最顺眼了。
for 循环
=========
::
for item in some_list:
do something with item
python 的 for 与 c 的 for 不同,要类比的话,大家可以想象一下某些语言的 foreach 。
python 只支持这一种 for 语句,而没有类似 c 的 for 语句,
因为用这种 for 语句很容易就可以模仿出 c 那种类型的 for 语句
(还记得上一章的习题2吧,对,就是它:range ;-):
::
# 伪码,c 类型的 for 语句:
for(i=0;i<10;i++):
...
# python 等价物:
for i in range(10):
...
.. topic:: Under the hood
::
for item in some_list:
do some thing with item
实际上等价于:
::
iterator = iter(some_list)
try:
item = iterator.next()
do some thing with item
item = iterator.next()
do some thing with item
...
except StopIteration:
pass
也就是说 for in 操作的是任意的迭代器!
TODO: 关于迭代器!
while 循环
============
异常处理
============
小结
==========
练习
===========
.. macro:: [[PageComment2(nosmiley=1, notify=1)]]