2.1.1 调用和定义函数

通过之前程序中对函数的使用,可以很容易理解调用一个Python函数的效果。例如,当程序包含代码math.sqrt(a-b)时,其效果等同于把该代码替换为通过传递参数a-b调用Python函数math.sqrt()产生的返回值。这种使用方法十分直观,一般无须说明。如果你想知道系统如何实现该调用效果,则需要了解该调用过程所包含的程序控制流程。通过函数调用实现程序流程控制,其深远意义等同于选择结构和循环结构。

在Python程序中,可使用def语句定义函数。def语句指定函数签名,随后跟着构成函数体的一系列语句。我们稍后将讨论其细节。这里先通过介绍一个简单示例,阐述函数如何影响程序的控制流程。我们的第一个例子程序2.1.1(harmonicf.py),包括一个名为harmonic()的函数,函数带一个参数n,计算第n阶调和数(具体参见程序1.3.5)。程序同样说明了一个Python程序的典型结构包括如下三个部分:

·一系列import语句。

·一系列函数定义。

·任意数量的全局代码,即程序的主体。

程序2.1.1包含两个import语句、1个函数定义、4行全局代码。通过在命令行中键入python harmonicf.py并按回车键调用执行程序时,Python开始执行全局代码。在全局代码中调用了之前定义的函数harmonic()。

相对于最初实现的计算调和数的程序(程序1.3.5),harmonicf.py中的实现更有可取之处。因为harmonicf.py清晰地把程序的两个主要任务分开来:计算调和数、与用户交互。(为了描述,程序2.1.1中与用户交互的部分比程序1.3.5更为复杂)。在计算任务中,任何时候只要可以清晰地分离任务,则建议使用函数分离任务。接下来,我们将详细讨论harmonicf.py程序如何实现这个目标。 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.