Python定义函数(def关键字)
Python 利用 def 关键字自定义一个函数,自定义的函数可以根据个人的需求自行设计。本文我们介绍自定义函数的使用方法。
定义函数是函数架构中最重要的部分,它定义了一个函数的内部流程运作,包括接收什么参数、进行哪种处理、处理完成后返回哪些数据等。
定义函数时先使用关键字 def,接着写函数名称,后面小括号内可以填写要传入函数的参数,小括号之后再加上“:”,格式如下所示。
另外,自定义函数中的参数可有可无,也可以有多个。冒号“:”之后则是函数主体,函数的程序代码内容可以是单行或多行语句,并统一进行缩进(一次缩进 4 个半角的空格)。
return 语句可以返回值给调用函数的主程序,返回值也可以有多个,如果函数没有返回任何数值,则可以省略 return 语句。
定义完函数后,函数并不会主动执行,只有在调用该函数时才会开始执行,调用自定义函数的语法格式如下所示。
下面我们将定义一个名为 blessings() 的简单函数,该函数会输出一行字符,程序代码如下:
下面在函数中增加一个参数,动态指定函数要输出的字符串,程序代码如下:
接下来要介绍的自定义函数带有返回值,例如,函数会返回所传入参数相乘后的结果,程序代码如下:
读者可以修改上述程序代码,将输出的语句写在函数内,并取消原先的返回语句,该函数则会返回 None,程序代码如下:
在自定义函数时,也可以给小括号内的参数默认初始值,调用函数时,如果实参值未传递,则会默认“参数=初始值”,例如下面的程序代码:
另外 Python 的函数也可以一次返回多个值,所有返回的多个值之间以逗号“,”分隔,例如下面的程序代码:
我们再来看一个例子,要求函数一次返回 3 个值,程序代码如下:
【示例1】调用函数的过程中传入不定个数的实参。Python 代码如下:
【示例2】自定义业务奖金计算函数,让用户输入产品单价及销售数量计算总销售业绩,然后将总销售业绩乘上 35% 计算出应得奖金。Python 代码如下:
【示例3】定义输入两数 x、y 并计算 xy 值的函数 pow(),求一个数的指数次方值。Python 代码如下:
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
Python自定义函数
自定义函数是指由用户自行编写的函数,定义该函数后才能调用它。定义函数是函数架构中最重要的部分,它定义了一个函数的内部流程运作,包括接收什么参数、进行哪种处理、处理完成后返回哪些数据等。
定义函数时先使用关键字 def,接着写函数名称,后面小括号内可以填写要传入函数的参数,小括号之后再加上“:”,格式如下所示。
def 函数名称(参数1, 参数2, …):
程序代码块
return 返回值 #有返回值时才需要
另外,自定义函数中的参数可有可无,也可以有多个。冒号“:”之后则是函数主体,函数的程序代码内容可以是单行或多行语句,并统一进行缩进(一次缩进 4 个半角的空格)。
return 语句可以返回值给调用函数的主程序,返回值也可以有多个,如果函数没有返回任何数值,则可以省略 return 语句。
定义完函数后,函数并不会主动执行,只有在调用该函数时才会开始执行,调用自定义函数的语法格式如下所示。
函数名称(参数1, 参数2, …)
下面我们将定义一个名为 blessings() 的简单函数,该函数会输出一行字符,程序代码如下:
def blessings(): print('http://www.weixueyuan.net/') blessings()输出结果:
http://www.weixueyuan.net/
下面在函数中增加一个参数,动态指定函数要输出的字符串,程序代码如下:
def blessings(str1): print(str1) blessings('魏雪原') blessings('http://www.weixueyuan.net/')输出结果:
魏雪原
http://www.weixueyuan.net/
接下来要介绍的自定义函数带有返回值,例如,函数会返回所传入参数相乘后的结果,程序代码如下:
def func(a,b): x = a * b return x print(func(4,3))输出结果:
12
读者可以修改上述程序代码,将输出的语句写在函数内,并取消原先的返回语句,该函数则会返回 None,程序代码如下:
def func(a,b): x = a * b print(x) print(func(4,3))输出结果:
12
None
在自定义函数时,也可以给小括号内的参数默认初始值,调用函数时,如果实参值未传递,则会默认“参数=初始值”,例如下面的程序代码:
def func(a,b,c=10): x = a - b + c return x print(func(3,1,3)) # a=3,b=1,c=3 print(func(5,2)) # a=5,b=2,c=10输出结果:
5
13
另外 Python 的函数也可以一次返回多个值,所有返回的多个值之间以逗号“,”分隔,例如下面的程序代码:
def func(a,b): p1 = a * b p2 = a - b return p1, p2 num1 ,num2 = func(5, 4) print(num1) print(num2)输出结果:
20
1
我们再来看一个例子,要求函数一次返回 3 个值,程序代码如下:
def func(length,width,height): p1 = length*width*height p2 = length+width+height p3 = (length*width+height*length+width*height)*2 return p1, p2, p3 num1 ,num2, num3 = func(5, 4, 3) print(num1) print(num2) print(num3)输出结果:
60
12
94
Python自定义函数应用示例
如果用户事先不知道调用函数时要传入参数的个数,这种情况下可以在定义函数时,在参数前面加上一个星号“*”,表示该参数可以接收不定个数的实参,而所传入的实参会被视为一个元组;但是在自定义函数时在参数前面加上两个星号“**”,传入的实参会被视为一个字典。【示例1】调用函数的过程中传入不定个数的实参。Python 代码如下:
def factorial(*arg): product=1 for n in arg: product *= n return product ans1=factorial(5) print(ans1) ans2=factorial(5,4) print('5*4=',ans2) ans3=factorial(5,4,3) print('5*4*3=',ans3) ans4=factorial(5,4,3,2) print('5*4*3*2=',ans4) def myfruit(**arg): return arg print(myfruit(d1='apple', d2='mango', d3='grape'))输出结果:
5
5*4= 20
5*4*3= 60
5*4*3*2= 120
{'d1': 'apple', 'd2': 'mango', 'd3': 'grape'}
- 第 1~5 行:如果事先不知道要传入的实参个数,可以在自定义函数时在参数前面加上一个星号“*”,表示该参数接收不定个数的实参,传入的实参会被视为一个元组。
- 第 16~17 行:在参数前面加上两个星号“**”,传入的实参会被视为一个字典。
【示例2】自定义业务奖金计算函数,让用户输入产品单价及销售数量计算总销售业绩,然后将总销售业绩乘上 35% 计算出应得奖金。Python 代码如下:
def payment(): price = float(input("产品单价:")) num = float(input("销售数量:")) rate = 0.35 #奖金所占的百分比 total = price*num * rate return price*num, total e1 ,e2 = payment() print("总销售业绩{},应得奖金:{}".format(e1, e2))输出结果:
产品单价:500
销售数量:10
总销售业绩5000.0,应得奖金:1750.0
- 第 1~6 行:定义自定义函数 payment(),该函数有两个返回值,即总销售业绩及应得奖金。
- 第 8 行:变量 e1、e2 分别用来接收 payment() 函数的两个返回值。
【示例3】定义输入两数 x、y 并计算 xy 值的函数 pow(),求一个数的指数次方值。Python 代码如下:
#参数:x 为底数 #y 为指数 #返回值:指数运算结果 def Pow(x,y): p=1 for i in range(y): p *= x return p print("请输入两个整数进行指数运算(如2 3):") x,y=input().split() print('x=',x) print('y=',y) print("指数运算结果: %d" %Pow(int(x), int(y)))输出结果:
请输入两个整数进行指数运算(如2 3):
3 4
x= 3
y= 4
指数运算结果: 81
- 第 4~8 行:定义了函数的主体。
- 第 10 行:输入两个整数。
- 第 13 行:输出调用函数计算的结果。
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。