《像计算机科学家一样思考Python》——4.5 泛化

本文介绍了使用Python进行绘图的泛化技巧,通过给函数添加参数实现对不同大小正方形及多边形的绘制。文章详细展示了如何通过增加length参数使square函数能够绘制任意大小的正方形,以及如何进一步修改函数使其能够绘制任意边数的多边形。

本节书摘来自异步社区《像计算机科学家一样思考Python》一书中的第4章,第4.5节,作者[美]Allen B. Downey,赵普明 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

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关键字混淆)。

这个语法使得程序更加可读。它也同样提示了我们实参和形参的工作方式:当调用函数时,实参传入并赋值给形参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值