(一)函数的定义和调用
1、【为什么要创建一个新的函数】
python中已存在了一些内置函数(built-in functions),但当这些内置函数不够用时,需要创建新的函数,以方便调用。
如之前判断输入的号码是不是一个手机号的代码:
number = input("请输入一个电话号码:")
if number.isdigit() and len(number) == 11:
print("这是一个电话号码")
else:
print("这不是一个电话号码")
如果以后需要反复用到这部分代码块,总不可能每次都把代码写一遍,而且一个大程序也不可能只有判断电话号码这一个功能,也不能为了这一个功能中断运行。因此,有必要简化代码,方便以后反复调用,让逻辑思维更清晰,及方便维护
【创建新函数的好处】:
①简化代码;
②方便以后反复调用;
③逻辑思维更清晰;
④方便今后程序的维护
2、【定义函数】
如上面判断是否手机号的代码,为了方便调用,现定义这部分代码的函数名(function)为num_mobile.
def num_mobile(): #第一行
number = input("请输入一个电话号码:") #第二行
if number.isdigit() and len(number) == 11:
print("这是一个电话号码")
else:
print("这不是一个电话号码")
【注意】函数名(此处为num_mobile) 要符合变量的命名规则(详见第一课)
定义一个函数有以下简单规则:
1)函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
2)任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3)函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4)函数内容以冒号起始,并且缩进。
5)return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
3、【调用函数】
函数定义决定了函数如何调用。
上例中,由于定义函数时()内没有参数,而是在函数内部用input方式输入参数,所以调用时括号无参数。
>>> num_mobile() #调用上例中的函数num_mobile
请输入一个电话号码:123456 #这是input要求输入内容
这不是一个电话号码 #这是函数调用运行的结果
如果上例中第一、二行代码修改如下:
def num_mobile(number): #此时上面第二行代码不必要了
if number.isdigit() and len(number) == 11:
return '这是一个电话号码' #比较上面print时的不同
else:
return '这不是一个电话号码'
则 num_mobile函数的调用方式变为:
>>> num_mobile("13312312334") #这里括号内必须输入参数
这是一个电话号码 #运行结果
此时函数num_mobile括号内就必须输入参数number(变量),因为前面def num_mobile(number)定义函数时括号有形参,因此调用时就要输入实际参数(实参)。
这样以后再需要判断电话号码时,只需要调用 函数num_mobile就可以了,而不需要重复输入代码。
【print和return的区别】
return是关键字,其结果可以赋值给一个变量,有返回值和退出函数的功能;而print是函数没有返回的功能,其打印的结果不可以赋值给变量。
上例中的代码再修改如下:
def num_mobile(number): #此时上面第二行代码不必要了
if number.isdigit(