阅 读 文 章

转贴一篇不错的Python入门教程 - Instant Hacking[译文]

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(rockety) | 时间:2007-05-27 | 浏览:人次 ]




练习3

写一个函数,用欧几里德方法寻找两个数的一个共同因数。工作过程是这样的:

1. 假设两个数,a和b,a大于b
2. 重复以下步骤直到b变成0:
1. a变为b的值
2. b变成没有改变值之前的a除以没有改变值之前的b的余数
3. 返回a的最后一个值

提示:

* 使用a和b作为函数的参数
* 简单的设定a大于b
* x除以z的余数用表达式 x % z 来计算
* 两个变量可以象这样一起赋值:x, y = y, y+1。这里x被赋以值y(这意味着,y的值此前已经指定)而且y被递增了1。

7. 深入函数

上面的练习怎么做?难吗?还不太清楚函数?别担心--我还没完成我的话题呢。

我们构建函数时使用的萃取方法称为过程抽象,许多编程语言把关键字过程同函数一样使用。事实上,这两个概念是不一样的,但是在python中它们都被称为函数(因为它们或多或少以同样的方式定义和使用)。

函数和过程(在其它语言中)的区别在哪里呢?嗯--就像你在前面的段落里看到的那样,函数可以返回一个值。区别就是过程并不返回这样的值。许多时候,用这种方法把函数划分为两种类型--返回值的和不返回值的--是很有用的。

不返回值的函数(过程)可以用作子程序或例行程序。我们调用这些函数,它们制造某些原料,就象泡沫鲜奶之类的。我们可以在很多地方使用这个函数而不需要重写它的代码(这被称为代码再利用--以后你还会知道,它意义不仅仅在这里)。

这样的函数(或过程)的另一个有用性体现在--它改变了环境(例如,把糖和奶油混在一起搅拌,它们的整个外部状态就变化了)让我们看个例子:

def hello(who):
      print "Hello, ", who

hello("world")
# Prints out "Hello, world"


打印出内容是它一方面的作用,因为这是这个函数唯一需要做的事,它其实是一个典型的所谓过程。但是……它事实上没有改变它的运行环境,是不是?它怎样才能改变呢?让我们试一下:

# The *wrong* way of doing it
age = 0

def setAge(a):
      age = a

setAge(100)
print age
# Prints "0"


错在哪儿?错在函数setAge创建了它自己的也被命名为age的局部变量,它只在setAge函数内部可用。那如何才可以避免出现这个问题呢?我们可以使用全局变量。

注意:全局变量在python中不常用。它们容易引起不好的代码组织结构,被称为意大利面代码。我这里使用它们是为了引出更复杂一点的技术问题--如果你可以请尽量避免使用它们。


[color=#FF0000]未译完。。。[/color]


 rockety 回复于:2005-06-06 09:27:59

[color=red]译完了的,只是不小心,没在我的blog上贴全,而且也没有给出缩进。:oops: 今天一并更正了。感谢wolfg转贴,并给出了正确的缩进。以下是其余部分:[/color]

通过告诉解释器一个变量是全局的(用象global age这样的表达式做),我们事实上
告诉了它在函数之外使用这个变量,而不是重新创建一个新的局部变量。(所以,和局部
相反它是全局的。)因此上面的程序可以象这样重写:

# The correct, but not-so-good way of doing it
age=0

def setAge(a):
    global age
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 译文 教程 入门 不错 我们 可以 一个 函数 这样 使用

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.