4.5 泛化
下一步是给square函数添加一个length参数。这里是一个解决方案:
def square(t, length):
for i in range(4):
fd(t, length)
lt(t)
square(bob, 100)
给函数添加参数的过程称为泛化(generalization),因为它会让函数变得更通用:在之前的版本中,正方形总是一个大小,而新的版本中,可以是任意大小。
下一步也是一次泛化。我们不再只绘制正方形,而是可以绘制任意边数的多边形。这里是一个方案:
def polygon(t, n, length):
angle = 360.0 / n
for i in range(n):
fd(t, length)
lt(t, angle)
polygon(bob, 7, 70)
这个例子绘制一个7边形,边长是70。如果函数的形参比较多,很容易忘掉每一个具体是什么,或者忘掉它们的顺序。所以在Python中,调用函数时可以加上形参名称,这样是合法的,并且有时候会有帮助:
polygon(bob, n=7, length=70)
这些参数被称为关键词参数(keyword argument),因为它们使用“关键词”的形式带上了形参的名称调用 (请别和while与def之类的Python关键字混淆)。
这个语法使得程序更加可读。它也同样提示了我们实参和形参的工作方式:当调用函数时,实参传入并赋值给形参。
时间: 2024-10-22 19:36:11