你不快乐的原因大概是,总是间歇性踌躇满志,持续性混吃等死。 既无法忍受目前的状态,又没有能力改变这一切。 可以像只猪一样懒,却无法像只猪一样懒得心安理得!
文章目录
一、什么是函数
1.引出函数
- 当我输入一定的数据以后,我能根据里面的执行步骤。算出 另一些数据的值。得到数据,获取输出值。
定义 电饭锅(佐料一, 佐料二, 其他佐料):
# 将主人加到电饭锅里的各种佐料,进行加工
食物 = 加热(佐料一 + 佐料二 + 其他佐料) # 复杂的化学反应
主人您的美食好了,请享用
# 帅哥可优
极似粥的米饭 = 电饭锅(加非常多水, 没淘的米, 无)
-
把具有独立功能的代码块 组织为一个小模块,在需要的时候 调用
-
两个步骤:
-
定义函数 —— 封装 独立的功能
-
调用函数 —— 享受 封装 的成果
-
-
提高编写的效率、代码的重用
-
让程序更小、模块化
2.函数定义
定义函数的格式如下:
def 函数名():
"""
注释信息
"""
函数封装的代码
……
-
def
是英文define
的缩写 -
“:” 代表函数头的结束
-
函数名称 应该符合标识符的命名规则
-
见名知意
-
由 字母、下划线 和 数字 组成
-
不能以数字开头
-
不能与关键字重名
-
调用函数很简单的,通过
函数名()
即可完成对函数的调用
3.函数断点调试
需求
- 编写一个打招呼
say_hello
的函数
打断点调试,用 单步执行 F8 和 F7 观察一下代码的执行过程
- 定义好函数之后,只表示这个函数封装了一段代码而已
- 如果不主动调用函数,函数是不会主动执行的
4.PyCharm 的调试工具
- F8 Step Over 可以单步执行代码,会把函数调用看作是一行代码直接执行
- F7 Step Into 可以单步执行代码,如果是函数,会进入函数内部
5.函数的文档注释
- 给函数添加注释:在 函数定义 的下方,使用 连续的三对引号
- 在 连续的三对引号 之间编写对函数的说明文字
- 使用 函数名._doc_ 可以查看注释
- 在 函数调用 位置,使用快捷键
CTRL + Q
可以查看函数的说明信息
注意:因为函数体相对比较独立,函数定义的上方和下方,应该和其他代码(包括注释)保留 两个空行
#### 函数参数的使用
- 在函数名的后面的小括号内部填写 **参数**
- 多个参数之间使用 `,` 分隔
6.形参和实参
- **形参**:**定义** 函数时,小括号中的参数,是用来接收参数用的,在函数内部 **作为变量使用**
- **实参**:**调用** 函数时,小括号中的参数,是用来把数据传递到 **函数内部** 用的
-
二、函数参数的类型
1.分类
- 位置参数
- 关键字参数
- 默认参数
- 可变参数
2.位置参数
-
形参与实参一一对应
-
当参数非常多的时候,会出现什么问题呢?
# 定义一个函数
def my_func1(a, b):
print(a + b)
# 函数的调用 -> 位置参数调用函数
# 使用位置参数调用函数 需要注意实参的位置
# 实参的位置和形参的位置要一一对应
# TypeError: my_func1() missing 1 required positional argument: 'b'
# 如果实参传入的少一个实参 会报错
# my_func1(11)
3.关键字参数
为参数指定名称
关键字的名字==> 形式参数