2.1.3 方法、函数

本节目标:

  • 了解什么是方法,与数学函数的相似处。

  • 学习使用fdltbkrt方法。

什么是方法

方法(Method)是实现某种特定功能、可以重复使用的一段代码 。在不同场合,这样的一段代码也会被叫做其他名字,比如子程序、过程、函数等 (https://zh.wikipedia.org/wiki/子程序 ) 。在Python中,如果这段代码出现在一个类中,通常叫方法。 如果是不依赖一个类的“方法”,一般叫函数,如之前出现的mainloop

方法与数学中函数的概念有类似之处,如二次函数f(x) = x^2x映射到x^2。 一个Python中的方法也可以实现类似功能,比如一个正方形对象,求面积是它的一个方法。(相应地,面积可以是它的一个属性。) Python中的方法不局限于数学函数,比如对于小海龟对象,画一个正方形也是它的一个方法。

刚才的例子f(x) = x^2是一个一元函数,这里的“元”在Python中叫做参数,即“f(x)带有一个参数”。 方法也可以没有参数。

Python中的参数可以是任何对象,数字、字符串、小海龟都可以。

Learning By Doing 难度:★ 重要性:★★★★★

  • 运行以下代码,观察结果。

    import turtle
    t1 = turtle.Turtle('turtle')
    t2 = turtle.Turtle('turtle')
    t1.lt(90)
    t1.fd(50)
    turtle.mainloop()

可以看到,屏幕上一只小海龟动了起来,而另一只小海龟停留在原地。

并且,通过在创建对象的时候带上参数'turtle',我们让小海龟真的变成了海龟的形状。 'turtle'中的turtle被引号括起来了,这是一个字符串对象。 我们以后再来看字符串的其他特性。

这里,是把字符串'turtle'当作类turtle.Turtle的参数。

t1.fd让小海龟t1前进(fdforward的缩写),这个方法带一个参数,表示前进的距离; t1.lt让小海龟t1左转(ltleft的缩写),带一个参数,表示转动的角度。

类似,t1.bkt1.rt让小海龟后退、右转。

我们可以再让小海龟走几步,画一个正方形。

import turtle
t1 = turtle.Turtle('turtle')
t1.fd(50)
t1.rt(90)
t1.fd(50)
t1.rt(90)
t1.fd(50)
t1.rt(90)
t1.fd(50)
t1.rt(90)
turtle.mainloop()

Learning By Doing 难度:★ 重要性:★★★★★

  • 让小海龟t2画一个正五边形。

Learning By Thinking 难度:★ 重要性:★★★

  • 数学函数与Python中的函数有什么异同?

数学中的函数是一个映射,计算机函数的概念从数学函数中产生,可以看作是从参数定义域到代码的映射。 然而,在编程中相比于函数的代码,我们更关心这段代码的运行结果。从参数的定义域到运行结果却并不一定是一个映射。 比如,Python函数可以用来产生随机数,每一次对随机函数求值都会得到不同的结果,这显然(至少在形式上)不是数学函数。

注意这只是Python中的情况,在有些语言中,比如Haskell,函数与数学函数是一样的概念。

Last updated