setAge(100)
print age
# Prints "100"
了解对象(随后谈到)后,你会发现更好的解决这个问题的办法是使用一个有age属
性和setAge方法的对象。在数据结构那段,你也将会发现一些函数改变它的环境的更好的
例子。
好了--那么真正的函数是什么样?什么是函数呢,事实上?数学函数象一种“机
器”,获得输入然后计算结果。它会每次返回同样的结果,如果每次提供它同样的输入。
例如:
def square(x):
return x*x
这和数学上的函数f(x)=x*x 一样。它的行为象一个精确的函数,仅仅依赖于它的输
入,在任何情况下都不改变它的环境。
所以--我这里描绘了两种构造函数的方法:一种类型更象是过程,不返回任何结
果;另一种更象是数学上的函数,(几乎)什么也不做就是为了返回一个结果。当然,在
这两种极端事物之间做某些事情是可能的,尽管当函数改变事物的时候,它应该清楚它改
变了。你可以通过标记它们的名字区分它们,例如为“纯粹”的函数使用象square这样的
名词而对类似过程那样的函数使用象setAge这样命令式的名字。
9. 更多类型-数据结构
现在--你已经知道了不少:怎样输入输出,怎样设计复杂的运算法则(程序)来执
行数学运算,但是好戏还在后头呢。
截止目前我们都在程序中使用了哪些成份呢?数字和字符串,对不对?没意思的种
类……现在让我们引入两三个其它的成份来让事情变得更有意思些。
数据结构是种组织数据的成份。(惊奇,吃惊……)单个的数据没有什么真正的数据
结构,是不是?但是假设我们需要很多数放在一起做为一个成份--那就需要某种结构。
例如,我们可能想要一个数据列表。那很容易:
[3, 6, 78, 93]
在循环那段我提到了列表,但没真正描述它。好--这里说的就是你如何创建它。只
需要列出元素,用逗号分开,再加上方括号就行了。
来看一个计算素数(只能被1和它本身整除的数)的例子:
# Calculate all the primes below 1000
# (Not the best way to do it, but...)
result = [1]
candidates = range(3, 1000)
base = 2
product = base
while candidates:
while product < 1000:
if product in candidates:
candidates.remove(product)
product = product+base
result.append(base)
base = candidates[0]
product = base
del candidates[0]
result.append(base)
print result
这个例子中的新东西……
内建函数range事实上返回一个列表,可以象所有其它列表那样使用。(它包括第
一个数,但是不包括最后一个数。)
列表可以当作逻辑变量使用。如果它非空,则为true,否则为false。因此,while
candidates意思是“while名称为candidates的列表非空时”或者简单的说“while存
在candidates时”。
你可以用if someElement in somelist来检查一个元素是否在列表中。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 译文 教程 入门 不错 我们 可以 一个 函数 这样 使用 |
注册
个人空间
