2.6 函数
如果你发现会重复使用相同的代码,可以创建自己的函数并进行调用,而不是重复编写相同的代码。这使得事情变得更容易,也不容易出错,因为不可能有那么多的地方出现拼写错误。创建一个函数,需要给它一个名称,并告诉用户需要提供什么参数来使用它。让我们创建一个简单的函数来计算一个阶乘。
**def factorial(n):
answer = 1
for i in range(1, n + 1):
answer = answer * i
return answer**
这个函数的名字是factorial,它需要一个参数n。它使用你以前使用过的相同的算法来计算一个阶乘,然后使用返回语句将答案发送给调用方。可以像下面这样使用这个函数:
>>> fact5 = factorial(5)
函数也可以有不需要用户提供数值的可选参数。要创建某个可选参数,在创建该函数时,必须为它提供一个默认值。例如,可以为阶乘函数增加可选参数,并输出答案。
**def factorial(n, print_it=False):
answer = 1
for i in range(1, n + 1):
answer = answer * i
if print_it:
print('{0}! = {1}'.format(n, answer))
return answer**
如果只是用一个数字调用这个函数,没有东西会被输出,因为print_it默认值为False。但是如果传递True作为第2个参数,那么消息会在答案返回前被输出:
**>>> fact5 = factorial(5, True)
5! = 120**
通过将你的函数保存在.py文件里,可以很容易地重复使用它,可以像导入任何其他模块一样进行调用。问题是,你的文件需要存放在一个Python可以找到的位置。一种方法是把它和正在运行的脚本放在同一个文件夹中。例如,如果factorial函数保存在myfuncs.py文件中,可以导入myfuncs(注意没有.py扩展名),然后调用它里面的函数。
**import myfuncs
fact5 = myfuncs.factorial(5)**
因为某些字符不允许出现在模块名称中,模块名称只有文件名没有扩展,当文件命名时,需要小心。例如,模块名称允许出现下划线,但不允许出现连字符。