python中函数定义由三部分组成_SICP Python 描述 1.3 定义新的函数

本文介绍了Python中函数定义的组成部分,包括def语句、形式参数、函数体和return表达式。通过示例解释了如何定义和调用用户自定义函数,探讨了函数的环境、局部和全局帧的概念,以及调用过程中的环境扩展。强调了函数作为抽象的强大力量,允许隐藏实现细节并促进代码复用。
摘要由CSDN通过智能技术生成

1.3 定义新的函数

译者:飞龙

我们已经在 Python 中认识了一些在任何强大的编程语言中都会出现的元素:

数值是内建数据,算数运算是函数。

嵌套函数提供了组合操作的手段。

名称到值的绑定提供了有限的抽象手段。

现在我们将要了解函数定义,一个更加强大的抽象技巧,名称通过它可以绑定到复合操作上,并可以作为一个单元来引用。

我们通过如何表达“平方”这个概念来开始。我们可能会说,“对一个数求平方就是将这个数乘上它自己”。在 Python 中就是:

>>> def square(x):

return mul(x, x)

这定义了一个新的函数,并赋予了名称square。这个用户定义的函数并不内建于解释器。它表示将一个数乘上自己的复合操作。定义中的x叫做形式参数,它为被乘的东西提供一个名称。这个定义创建了用户定义的函数,并且将它关联到名称square上。

函数定义包含def语句,它标明了(名称)和一列带有名字的(形式参数)。之后,return(返回)语句叫做函数体,指定了函数的(返回表达式),它是函数无论什么时候调用都需要求值的表达式。

def ():

return

第二行必须缩进!按照惯例我们应该缩进四个空格,而不是一个Tab,返回表达式并不是立即求值,它储存为新定义函数的一部分,并且只在函数最终调用时会被求出。(很快我们就会看到缩进区域可以跨越多行。)

定义了square之后,我们使用调用表达式来调用它:

>>> square(21)

441

>>> square(add(2, 5))

49

>>> square(square(3))

81

我们也可以在构建其它函数时,将square用作构建块。列入,我们可以轻易定义sum_squares函数,它接受两个数值作为参数,并返回它们的平方和:

>>> def sum_squares(x, y):

return add(square(x), square(y))

>>> sum_squares(3, 4)

25

用户定义的函数和内建函数以同种方法使用。确实,我们不可能在sum_squares的定义中分辨出square是否构建于解释器中,从模块导入还是由用户定义。

1.3.1 环境

我们的 Python 子集已经足够复杂了,但程序的含义还不是非常明显。如果形式参数和内建函数具有相同名称会如何呢?两个函数是否能共享名称而不会产生混乱呢?为了解决这些疑问,我们必须详细描述环境。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值