上一篇函数介绍,是在函数中对结果进行一个打印,并没有调用者返回数据
函数可以接受参数,同样的也可以返回参数
函数就是一个封装好的操作,就像一个黑匣子,有入口也要有出口,丢只鸡和小麦进去,因为我是个吃货,我希望出来的是炸鸡和啤酒,而不是出来一只更肥的鸡
函数的返回值,是用关键字return 结果值
【同样的,结果值也可以是多个】
改写上篇文章的函数,接收字符串,返回逆序字符串,示例代码:
def parse_str(strs):
rev_str = ""
for i in strs:
rev_str = i + rev_str
#print(rev_str),记住这行代码被我注释了
return rev_str # return后面空格,然后放上要返回的结果参数就可以了
现在这个函数已经写好了,然后就是调用了
parse_str("pipixia let's go")
调用函数写好了,但是你执行之后,黑黑的终端【也叫命令提示符】并未打印任何信息,而且函数返回的值,在哪呢?
调用语句不对啦,既然函数有返回值,那调用语句可以赋值给一个变量,代码如下:
result = parse_str("pipixia let's go")
print(result)
效果图【一目了然的清晰】:
函数的返回值,成功的赋值给result,并用print对其进行打印显示
函数返回结果,并打印出来没有任何问题,下面就介绍一下函数的默认参数
回到刚刚的鸡和小麦的故事,用这个故事讲解下默认参数是怎么回事...
先定义处理鸡和小麦的函数:
def process_chicken(chicken, wheat):
fired_chicken = "fired_chicken"
beer = "beer"
# 这里是将鸡做成炸鸡的过程,省略
# 这里是将小麦制成啤酒的过程,省略
return fired_chicken, beer
过程太复杂,代码太难写,省略,我们只看前后结果
函数接收鸡和小麦这两个参数,然后返回炸鸡和啤酒,是个完整的函数。
但是我现在有更多要求【需求】
分析这个需求,就有两种情况输入,第一种是鸡+小麦;第二种是鸡+小麦+配料
这里的话,函数就需要最多接收三个参数,最少是两个参数,所以就有一个默认的参数,没有输入就默认一个空值
示例代码:
def process_chicken(chicken, wheat, something=""):
if something == "辣椒":
fired_chicken = "辣子鸡"
elif something == "手套":
fired_chicken = "手扒鸡"
else:
fired_chicken = "炸鸡"
beer = "啤酒"
return fired_chicken, beer
【代码中使用到了 if 语法】
然后就是函数调用以及打印结果:
对着效果图看结果,函数调用语句直接是print函数打印出来了
在第一个只输入两个参数时,变量something默认是空字符串;输入辣椒时,something是辣椒;输入手套时,something是手套。然后在函数中进行判断,作规定的套餐
本节最后对函数的返回值,进行一个赋值类型的查看和比较【就用手扒鸡的代码】
图片结果解析:
这就是参数和返回值个数不一样时,Python自动打包做的处理
当然,推荐返回一个参数的函数,简单好处理,也省事