函数概述(Overview of Function)
在Python中有一个重要的概念叫函数。我们常常用不求甚解来形容对某些事物不去追究原理或原因。如,人们不会去追究发动机的原理而照样开小汽车,人们只要知道操控它就行了。人们也不知道大米酿造成白酒的化学原理,可是千百年来,照样是出了很多著名的白酒品牌。在Python中有print命令,相信大家都不知道它把字符串打印到IDLE中的具体原理。还有诸如随机模块的randint命令,os模块的那些命令,我们都不知道它们的原理。这些是预定义好的一些命令。命令,它能实现某种功能(function)。当我们要实现某种功能时,可以查找Python手册或其它模块中有没有相应的命令。如果找不到了,那就需要自己制造一个命令来实现这个功能了,这叫定义函数(在英文中它的翻译就是function)。函字通涵,它是蕴涵的意思。函数是组织好的,可重复使用的,用来实现某种功能的代码段。要使用函数,需要先定义它。函数定义好了,我们就能使用它们,这叫调用函数。在海龟画图中,我们接触过很多命令,它们都是事先定义好的函数。 接下来我们来定义函数,并且使用它们。
定义函数(Define Function)
在上面的图示中,def三个字是英文define的前三个字母,它就是定义的意思。在def之后是空格,接着就是函数名称,函数名称后是小括号号,最后面是冒号,需要注意一下的是,无论是小括号还是冒号,都是英文的半角符号,要不然就会出错。
上面的语句一、语句…和语句n就是语句组。给函数实现某种功能就要靠它的语句组了。最简单的语句组可以说是pass了。语句组中同样级别的语句们的缩进数要一致,否则就会出错。 以下是一个定义函数的例子:
>>> def introduce(): # 定义一个函数,名字叫introduce print("My name is rose") print("My age is 11") >>> >>> introduce() # 调用函数 My name is rose My age is 11
调用函数的方式就是写上函数名称,后面跟上小括号就行了。上面的第7行语句调用了函数,它只是简单地打印了一些字符串。我们可以用type命令查看函数的类型,也可以在调用函数的时候不输入小括号看看是个什么结果。
>>> introduce # 不输入小括号,直接查看函数 <function introduce at 0x0000000002FDBBF8> # 返回的是函数表述字符串 >>> type(introduce) # 查看introduce的类型 <class 'function'> # <类 ‘函数’> >>>
在函数中当然也能使用导入进来的其它命令,接下来的例子命令使用了random中的randint和os模块中的mkdir命令。
>>> import random # 导入随机模块 >>> import os # 导入os模块 >>> def make_random_dir(): # 定义函数,名称为 make_random_dir s = "" for n in range(10): # 迭代10次n s = s + str(random.randint(0,9)) # 产生0到9之间的随机数,转换成字符串,连接起来 os.mkdir(s) # 在当前文件夹下建立名字为s的文件夹 >>> make_random_dir() # 调用函数
上面定义了一个有一定使用价值的函数,它的名字叫make_random_dir,寓意为建立随机目录。当我们给函数,变量等取名字的时候,通常要给它们起一个恰当的名字,最好能直接表示函数的功能,当然不能和已有的命令、模块名等重名,更不能乱写。上面稍微难理解的是第6行代码,我们首先看str小括号里的命令。这个命令是:random.randint(0,9)。它会产生从0到9之间的随机整数。它产生后,str会把它转换成字符。最后这个字符和s连接起来了,结果就是s变长了一位。这个函数实现的功能就是,首先会产生一个随机的包括全是数字的字符串,然后在当前工作目录下以这个字符串为名称,建立一个新的目录。
现在,我们定义的函数都是没有参数的,可以称之为无参函数。所谓参数,先理解为在定义函数时候,在它的小括号有变量。既然有无参数的函数,那么可能某些函数就会有参数,暂且称之为有参函数,关于它,我们以后再学习。