创建一个函数
创建函数也称为定义函数,可以理解为创建一个具有某种用途的工具。使用def关键字实现,具体的语法格式如下:
def functionname([parameterlist]):
['''comments''']
[functionbody]
functionname:函数名称,在调用函数时使用。
parameterlist:可选参数,用于指定向函数中传递的参数。
调用函数
调用函数也就是执行函数。调用函数的基本语法格式如下:
functionname([parametersvalue])
functionname:函数名称,在调用的函数名称必须是已经创建好的。
parameterlist:可选参数,用于指定向函数中传递的参数。
参数传递
def fun_bmi(person,height,weight):
'''功能:根据身高和体重计算BMI指数
person:姓名
height:身高,单位:米
weight:体重,单位:千克
'''
print(person + "的身高:" +str(height) + "米 \t 体重:" + str(weight) + "千克")
bmi=weight/(height*height)
print(person + "的BMI指数为:"+str(bmi))
if bmi<18.5:
print("您的体重过轻 ~@_@~\n")
if bmi>=18.5 and bmi<24.9:
print("正常范围,注意保持 (-_-)\n")
if bmi>=24.9 and bmi<29.9:
print("您的体重过重 ~@_@~\n")
if bmi>=29.9:
rint("肥胖 ^@_@^\n")
fun_bmi("路人甲",1.80,87)
fun_bmi("路人乙",1.80,67)
输出:
路人甲的身高:1.8米 体重:87千克
路人甲的BMI指数为:26.85185185185185
您的体重过重 ~@_@~
路人乙的身高:1.8米 体重:67千克
路人乙的BMI指数为:20.679012345679013
正常范围,注意保持 (-_-)
位置参数
位置参数称为必备参数,是必须按照正确的顺序传到函数中,即调用时的数量和位置必须和定义时是一样的。
1.数量必须与定义时一致
在调用函数时,指定的实际参数的数量必须与形式参数的数量一致,否则将抛出TypeError异常,提示缺少必要的位置参数。
2.位置必须与定义时一致
在调用函数时,指定的实际参数的位置必须与形式参数的位置一致,否则将产生以下两种结果。
(1)抛出TypeError异常
(2)产生结果与预期不符
可变参数
在python中,还可以定义可变参数。可变参数也称不定长参数,即传入函数中的实际参数可以是任意多个。
定义可变参数时,主要有两种形式:一种是*parameter,另一种是**parameter
1.*parameter
这种形式表示接收任意多个实际参数并将其放到一个元组中。
>>> def printcoffee(*coffeename):
print('\n我喜欢的咖啡有:')
for item in coffeename:
print(item)
>>> printcoffee('蓝山','卡布奇诺','摩卡')
我喜欢的咖啡有:
蓝山
卡布奇诺
摩卡
如果想要使用一个已经存在的列表作为函数的可变参数,可以在列表的名称前加“*”。
>>> param = ['蓝山','卡布奇诺','土耳其']
>>> printcoffee(*param)
我喜欢的咖啡有:
蓝山
卡布奇诺
土耳其
2.**parameter
这种形式表示接收任意多个类似关键字参数一样显示赋值的实际参数,并将其放到一个字典中。
>>> def printsign(**sign):
print()
for key,value in sign.items():
print("["+ key +"]的星座是:"+ value)
>>> printsign(香凝='双鱼座',黛蓝='双子座',冷凝一='射手座')
[香凝]的星座是:双鱼座
[黛蓝]的星座是:双子座
[冷凝一]的星座是:射手座
如果想要使用一个已经存在的字典作为函数的可变参数,可以在字典的名称前加“**”。
>>> dict1={'绮梦':'水瓶座','冷伊一':'射手座','香凝':'双鱼座'}
>>> printsign(**dict1)
[绮梦]的星座是:水瓶座
[冷伊一]的星座是:射手座
[香凝]的星座是:双鱼座
返回值
在python中,可以在函数体内使用return语句为函数指定返回值,该返回值可以是任意类型,并且无论return语句出现在函数的什么位置,只要得到执行,就会直接结束函数的执行。