站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 网络编程 > cgi专区 > 正文

Python 快速入门(三)
  2007年10月14日23:51:01  评论(0条) 字体:[ ]
相关热点:
原作者: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 ---



执行 'python b.py',结果显示 :


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 接着 '.' 接着 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 里。'*' 是指所有的 name, 如果只是要 import 特定的 name,那麽你可以指定 name 替代 '*',如 from a import foo。


收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
windows 2008中文版iis7+asp+php+Acces
贴吧发帖机使用教程(绝对原创)
超强弹出窗口代码,什么都挡不住
Windows Vista局域网网络连接设置
JSP语法(6)
FLASH视觉特效实例之地震效果
关于数据分页(转自www.codeproject.co
教你如何在Vista中设置麦克风
不用Photoshop 在线恶搞大头像
全国哀悼日网友自发QQ隐身上线 向死难
淘宝网卖家公然叫卖“艳照门”照片集
抗震救灾/鱼目混珠?
Google绿色专家质疑黑色背景网页节省资
阿里妈妈广告卖主全攻略
电影小说类相关关键字搜索量列表
爆笑 阿里就这样把亿告征服!
大脚:实战单页面优化关键词之——淘宝
国内各IT企业办公环境揭秘(多图)
心系灾区,点燃希望——手机QQ2008祈福
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
ECSHOP模板下载
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
编程中国全站采集规则
http://www.mt86.com全站采集规则
性福联盟 一个不尊重站长的联盟
百度网络广告利润增长将会持续多久
大脚:日赚100元—揭露最新firefox欺骗
分享经验:个人网站如何月赚1万!
大脚:垃圾站超级赚钱法之二—突破“站
迅雷联盟、快车联盟收入对比
大脚:垃圾站超级赚钱法之——前言
Google Adsense的秘密 第二版
风险投资公司vc联系方式名录大全(一)
经理人必看的十个管理网站
站长学院  网页设计 建站教程 图形图象 网络编程

制定完整的网站
制定完整的网站
中国企业网站的
中国企业网站的

网站运营之怎么样来粘住你的用
网麒:网站建设创意
怎样提高网页快照更新
两种方法,教你如何通过微软正
英文网站优化细节
利用SSL加密增强FTP服务器的安
网页设计常用Javascript经典代

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13156089008