《像计算机科学家一样思考Python》——3.5 添加新函数

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

3.5 添加新函数

至此,我们都只是在使用Python提供的函数,其实我们也可以自己添加新的函数。函数定义指定新函数的名称,并提供一系列程序语句。当函数被调用时,这些语句会顺序执行。

下面是一个例子:

def print_lyrics():
   print "I'm a lumberjack,and I'm okay."
   print "I sleep all night and I work all day."

def是关键字,表示接下来是一个函数定义。这个函数的名称是print_lyrics。函数名称的书写规则和变量名称一样:字母、数字和某些标点是合法的,但第一个字符不能是数字。关键字不能作为函数名,而且我们应尽量避免函数和变量同名。

函数名后的空括号表示它不接收任何参数。

函数定义的第一行称为函数头(header),其他部分称为函数体(body)。函数头应该以冒号结束,函数体整体缩进一级。依照惯例,缩进总是使用4个空格,参看3.14节。函数体的代码语句行数不限。

本例中print语句里的字符串使用双引号括起来。单引号和双引号的作用相同。大部分情况下,人们都使用单引号,只在本例中这样的特殊情况下才使用双引号。本例中的字符串里本身就存在单引号(单引号也作为省略符号用,如I'm)。

如果在交互模式里输入函数定义,则解释器会输出省略号(...)提示你当前的定义还没有结束:

 >>> def print_lyrics():
 ...   print "I'm a lumberjack, and I'm okay."
 ...   print "I sleep all night and I work all day."
 ...

想要结束这个函数的定义,需要输入一个空行(在脚本文件中则不需要如此)。

定义一个函数后,会创建一个同名的变量。

 >>> print print_lyrics
 <function print_lyrics at 0xb7e99e9c>
 >>> type(print_lyrics)
 <type 'function'>

变量print_lyrics的值是一个函数对象,其类型是'function'。

调用新创建的函数的方式,与调用内置函数是一样的:

>>> print_lyrics()
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.

定义好一个函数之后,就可以在其他函数中调用它。比如,若想重复上面的歌词,我们可以写一个repeat_lyrics函数:

def repeat_lyrics():
   print_lyrics()
   print_lyrics()

然后可以调用repeat_lyrics:

>>> repeat_lyrics()
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.

当然,这首歌其实并不是这么唱的。

上一篇:享受生活:值得关注的七件家居智能硬件


下一篇:AWS杀入人工智能,正式加入全球AI大战