选择显示字体大小

python 快速入门(三)


   原作者:xina

程式流程、函数与模组


fllow control



1 if a <= b:
2 if c == d:
3 foo()
4 aoo()
5 else:
6 boo()



上面一个 if 的使用范例,在行 1,如果 a 小於等於 b 行 2~4 会被执行,否则行 6 会被执行。 python 并没有像 pascal 使用 begin ... end 定义 block,也没有像 c 使用 { ... } 定义 block, python 直接使用缩排决定statement 是否属於同一个 block。如 行1-4 因为缩排而成为一个 block, 而行 2-3 也因为缩排而成为一个 block,每一个 block 则成为一个 compound statement。if statement 的语法规式为 :


if : .....
elif : ......
elif : ....
else: .......



如其它语言,elif 和 else 为选择性功能,elif => else if


1 while a >= b:
2 foo()
3 boo()
4 if c != d: break
5 if c >= d: continue
6 coo()
7 else:
8 doo()
9 eoo()



上面是 while loop 的使用范例,当 a >= b 时,行 2-6会不断的一再执行,直到 a >= b 不成立时(false), 则执行行 8,然後继续往下执行 eoo()。但,如果执行行 4 的 break,则会无条件直接跳离 while loop, 不再执行 while loop 的任何内容(包含 else 的部分),直接执行行 9。若 while loop 中,continue 被执行, 则程式会直接跳过後面的指令回到行 1,进行条件判断。


1 for i in 1, 7, 3, 9:
2 print i,

结果显示 : 1 7 3 9



上面为 for loop 的使用法,for in : ....in 後面可为任何 sequence type object。


1 for i in range(3):
2 print i,
3 print range(3)

结果显示 : 0 1 2 [0, 1, 2]



range(x) 会产生一个包含 0 ~ x-1 的 list。

function



1 def foo(a, b):
2 return a+b
3 print foo(3, 4)

结果显示 : 7



上面为 function 的定义方式,def (, ....): ....return 可回传 function 的执行结果。 当行 3 执行 foo(3, 4),function foo 会被执行,然後传回 3+4 (a+b) 的结果。


1 def foo(a, b=2):
2 return a+b
3 print foo(3), foo(3,4)

结果显示 : 5 7



function 的参数可以定义预设值,设立预设值的参数如果呼叫时不给予,那麽会使用预设值。


1 def foo(a = []):
2 a.append(7)
3 return a
4 print foo(),
5 print foo()

结果显示 : [7] [7, 7]



预设值只会在 function 定义指令第一次被执行时进行计算,因此上例的 a 参数在第一次执行定义指令时, 就将预设值 bind 到一个 list object,之後使用预设值时就会 bind 到同一个 object,因而产生记忆的现象, 使第二次执行 foo() 所得到的结果受第一次执行的影向。

module
python 的 source file 为 *.py 这样的形式,如: foo.py boo.py。python 定义每一个 source file 为一个 module。

下面两个 module :


--- a.py ----
def foo():
return action+1
action = 9
--- a.py end ---
--- b.py ---
import a
print a.foo(), a.action
--- b.py ---



执行 &#39;python b.py&#39;,结果显示 :


10 9



当需要使用到其它 module 时,可以使用 import 指今,将该 module import 到你的 name space 里。 上例 b modlue 就 import a 这个 modlue,当 b 执行 import 指令时,在 b 的 name space 里, a 这个 name 就会 bind 到一个 module object。module 一但 load 进 memory 时, 就以 module object 代表,以供进一部的使用。所有 module 里定义的 name(function,object 或後面会介绍的 class)都会成为 module object 的 attribute。透过使用 module object attribute, 我们可以 access module 内所定义之 name。module attribute 的使用方式如上例, module 的 name 接着 &#39;.&#39; 接着 attribute 的 name。每个 module 都有自己的 name space, 透过 module attribute,我们可以 access 到其它 module 的 name space。

当 module 头一次被 load 进 memory 时,module 会被从头到尾执行一次。 其执行的结果则定义了 module 的 name space,使 name 和 object bind 在一起。 如上例执行 a.py 中的 def foo(): .... 这个指令时,定义一个 function object, 并使之和 foo 这个 name 进行 binding。


--- a.py ----
def foo():
return action+1
action = 9
--- a.py end ---
--- b.py ---
from a import *
print foo(), action
--- b.py ---



上例和前一个例子是相同的,但使用 from import *,这个指令的作用是, 把 module name space 里所有的 name,import 到目前的 name space 里。&#39;*&#39; 是指所有的 name, 如果只是要 import 特定的 name,那麽你可以指定 name 替代 &#39;*&#39;,如 from a import foo。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons