Python函数定义和使用(二)

布啦豆 5973

上一篇函数介绍,是在函数中对结果进行一个打印,并没有调用者返回数据

函数可以接受参数,同样的也可以返回参数

函数就是一个封装好的操作,就像一个黑匣子,有入口也要有出口,丢只鸡和小麦进去,因为我是个吃货,我希望出来的是炸鸡啤酒,而不是出来一只更肥的鸡

函数的返回值,是用关键字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自动打包做的处理

当然,推荐返回一个参数的函数,简单好处理,也省事

版权声明:允许转载,转载请注明出处 —— 《Python3教程》: Python函数定义和使用(二)

Copyright @2016-2017 | 赣ICP备16003025号