Python基础(十四):超实用的 “函数” 讲解,真全!

举报
数据分析与统计学之美 发表于 2021/09/27 21:46:26 2021/09/27
【摘要】 python系列第十四课

今天就带着大家开始我们——Python学习的第二课,Python基础之函数的使用。
image.png

在正式讲述函数之前,先给大家说明一点:编写函数就是“面向过程”的方式,编写类就是“面向对象’的方式。你如果不知道这是啥意思,至少别人提到这2个词你应该知道是在干嘛。

1. 函数的相关概念解释

函数是带有特有名字的代码块儿,用于帮助我们实现具体的功能。在正式讲述Python函数之前,这里首先给大家讲述一下函数的概念、好处和注意事项。

  • 概念: 将一组逻辑语句封装在方法体中,对外暴露方法名;
  • 好处: 隐藏了实现细节,提高代码的重用性;
  • 注意事项: 编写并调用一个函数,我们必须要知道① 函数的功能;② 函数名;

2. 函数的语法结构拆解

说了真么多,那么怎么样编写一个函数呢?这就涉及到函数的语法结构了。

# 定义函数
 def 函数名(形式参数1,形式参数2,...):
    """文档描述"""
    函数体
    return# 函数调用
函数名(实际参数1,实际参数2,...) 

哈哈,对于没有学习函数的同学来说,是不是一脸茫然?接着我给大家讲解一下每一部分的含义,做一个大拆解。

  • def: 它是定义函数的关键字,看到这个关键字,表示我们定义了一个函数;
  • 函数名: 类似于我们定义一个变量。函数名直接指向的是函数的内存地址,表示对函数体代码的引用,因此我们可以直接通过函数名,来调用函数,实现既定功能;
  • 括号: 括号内用于参数传递,但是该参数是可有可无的;
  • 冒号: 这是语法结构,没有为什么,这个冒号要一再强调,不能省略;
  • ""“文档描述”"": 用于描述该函数的功能,介绍一些参数信息,不是必须的,但是为了自己和他人以后能够看明白,建议加上;
  • 函数体: 用于实现特定功能的代码块儿;
  • return 值: 定义函数的返回值,return是可有可无的。

3. 返回值

上面我们已经知道:函数的返回值是可有可无的,有时候我们只需要直接显示输出,但有时候我们需要利用返回值,做一些其他的操作。

下面的演示,可能会涉及到”传参‘,不明白不要紧,咋们后面会慢慢讲述。

3.1 无返回值

比如:我们只想做一个简单的自我介绍,我们直接显示输出就好。

name = "黄同学"
age = 18
addr = "湖北"

def my_intro(name,age,arrd):
    print(f"我的名字是{name}")
    print(f"我今年{age}岁")
    print(f"我来自{addr}")

my_intro(name,age,addr)

结果如下:
在这里插入图片描述

3.2 有返回值

比如:求黄同学语数外三科的平均成绩,后面我要利用这个平均成绩,做一个汇报。

chinese = 91
math = 95
english = 90

def age_score(chinese,math,english):
    avg = (english + math + chinese) / 3
    return avg

avg = age_score(chinese,math,english)
print(f"我的平均成绩是:{avg}")

结果如下:
在这里插入图片描述

3. 传递参数

观察函数的语法格式,函数名后面跟着一个括号,括号中可以传递参数,也可以不传递参数。
在这里插入图片描述

3.1 无参传递

对于一个简单的函数,我们不需要传递任何参数,当然也没有返回值。这样的函数无法实现复杂的功能,很简单,但我们需要了解。

def func1():
    print("今天天气真是好!")
    
func1()

结果如下:
在这里插入图片描述

3.2 有参传递

有时候为了是的代码的可扩展性更高,需要给函数传递参数,来帮助我们实现更复杂的功能。在详细讲述有参传递之前,我们用一个简单的案例(如图所示),讲述“形参”和“实参”这两个概念。

name = "黄同学"

def func2(name):
    print(f"我的名字叫做:{name}")
    
func2(name)

结果如下:
在这里插入图片描述
上面的代码中,我给大家详细的标注了“形参”和“实参”的位置,下面来给它们下个定义。

  • 形参: 函数完成某个功能,所需的一项信息;
  • 实参: 调用函数时,传递给函数的具体信息;

总结一下:函数定义中传入参数,叫做形参。调用函数时,传入的参数,叫做实参。
在这里插入图片描述
某个函数为了实现更复杂的功能,有时候可能传递了多个形参,那么在进行函数调用时,也应该传递多个实参。函数传递实参的方式有很多:位置实参、关键字实参、默认值。

3.2.1 位置实参

位置实参指的是,实参传递顺序,和形参传递顺序完全一致。

name = "黄同学"
age = 18
addr = "湖北"

def my_intro(name,age,addr):
    print(f"我的名字是{name}")
    print(f"我今年{age}岁")
    print(f"我来自{addr}")

my_intro(name,age,addr)

结果如下:
在这里插入图片描述
如果实参传递顺序,和形参传递顺序弄错了,那就很尴尬了。
在这里插入图片描述

3.2.2 关键字实参

关键字实参指的是,在进行函数调用时,传递一个名称值对(类似于字典的键值对),直接将形参和实参关联起来,此时就不用考虑实参的传递顺序了。

name = "黄同学"
age = 18
addr = "湖北"

def my_intro(name,age,addr):
    print(f"我的名字是{name}")
    print(f"我今年{age}岁")
    print(f"我来自{addr}")

my_intro(age=age,name=name,addr=addr)

结果如下:
在这里插入图片描述

3.2.3 默认值

有时候,可以给每个形参指定默认值,应为它是永久不变的。此时在调用函数时,就不用传递该形参对应的实参。有一点需要注意:默认值形参一般放在所有形参之后。

比如:我们介绍自己的身体情况时,我们的名字肯定是永远不变的,但是体重是会变的。

weight = 80

def my(weight,name="黄同学"):
    print(f"我的名字是:{name}")
    print(f"我今天的体重是:{weight}kg")

my(weight)

结果如下:
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。