这是我参与更文挑战的第 12 天,活动详情查看: 更文挑战
我们在前面学习完了,数据类型、流程控制语句,这时候我们要把这些分散的代码把她门封装起来,需要的时候随时可以使用它们。
这时候就有了“函数”这个概念,话不多说,我们今天就来学习函数吧~
1.函数简介
1.1 什么是函数
函数(Function)是可重复用的程序代码块。
函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。
一致性指的是,只要修改函数的代码,则所有调用概函数的地方都能得到体现。
在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只对代码实现封装,并增加了函数的调用、传参、返回计算结果等内容。
因此,我们就明白函数具有以下特点
- 函数就是Python程序的重要组成单元,代表一个功能或者任务
- 一个python程序可以由多个函数组成
- 函数是代码复用的通用机制
1.2 函数分类
Python按参数可以分为不带参数函数、带参数函数
Python中函数按不同源分为四大类
序号 | 名字 | 案例 |
---|---|---|
1 | 内置函数 | str(),list(),len()等 |
2 | 库函数 | 过import语句导入库 |
3 | 第三方库 | pipx下载安装后,import导入 |
4 | 用户自定义库 | 用户按需要自定义函数 |
2.函数定义与调用
2.1 函数定义
Python中,定义函数的语法如下:
def 函数名(参数列表):
'''
文档字符串
'''
函数体(若干语句)
[return(返回值)]
- 函数的构成 1.def:
(1)Python执行def时,会创建一个函数对象,并绑定到函数名变量上。因此必须要以其关键字开头
2.函数名:
(1)由一个或者多个有意义的单词连缀而成。
(2)每个单词字母小写,单词与单词之前下划线分隔
3.参数列表:
(1)函数用于接收的参数。放置于圆括号内,可为空。 (2)如果多个参数,用逗号进行隔开。
4.文档字符串:
(1)使用三引号注释说明函数功能,方便后续查看
5.函数体:
(1)多条语句组成,其语句之间由严格的执行顺序的。排在函数体前面的语句总是先执行,排在函数体后面的语句总是后执行。
- return返回值
#定义一个函数打印出字符串每个字母”
def print_word(word):
for i in word:
print(i)
2.2 函数调用
函数调用步骤
1.必须要先必须要定义函数,即先调用 def 创建函数对象
(1) 内置函数对象自动创建
(2)标准库和第三方库函数,通过import导入模块时,会执行模块中的def语句
2.传入参数
3.执行函数体
4.返回结果
# 调用 函数 print_word() 打印Judging
str = "JueJing"
print_word(str)
3 函数主要构成
3.1 形参与实参
后续我们会具体了解参数的类型,本次先概述。
函数中形参及实参具体细节如下:
1.放置于圆括号内。如果多个参数,用逗号进行隔开。
2.形参不需要声明类型,也不需要指定函数返回值类型
3.无参数,也必须保留空的园括号
4.一旦在定义函数指定了参数列表,调用函数时,就必须传入对于的参数值(实参)
5.形参和实参必须要一一对应,否则程序会执行出错。
- 函数形参
(1)是属于函数的参数,也就是函数参数列表里的参数,只能在函数里面使用。
(2)用于定义参数
- 函数实参
(1)是我们调用函数时,参入的具体的参数。
(2)用于调用
我们来看个栗子:
# 定义一个计算阶乘的函数
def factorial(num):
f = 1
if num < 0:
return None
elif num == 0:
return 1
else:
for i in range(1, num + 1):
f = f * i
return f
n1 = factorial(10) # 10--就是实参
print(n1)
n2 = factorial(3) # 3 --实参
print(n2)
n3 = factorial(3,4) # 多传入一个实参,程序报错
print(n3)
3.2 函数注释
程序的可读性非常重要,一般建议在函数体开始的部分附上函数定义说明,这就是文档字符串,也称为函数注释。
-
我们可以通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。
-
查看可以调用help(函数名:doc)可以输出打印函数的文档字符串
# 定义一个打印*号的函数
def print_star(n):
'''
参数n:int
功能:打印传入n个星号
'''
print("*"*n)
help(print_star) # 调用help函数查看函数字符串文档
3.3 返回值
return 返回值特点:
- 1.如果函数体中包含return语句,则结束函数执行并返回值
# 定义一个函数,return
def add(n,m):
sum = n+m
return sum # 返回sum值
a = add(30,40)
print(a) # 赋值给a
print(add(30,40)+20) #直接使用返回值
return 结束函数体执行
def test():
print("start")
print("starting")
return # 提前结束函数执行
print("end")
test()
- 2.如果函数体中不包含return语句,则返回None值
def add(n, m):
sum = n + m
return # 无返回值
a = add(30, 40)
print(a) # 赋值给a
- 3.如果返回多个值,python会自动将多个返回值封装成元组
def test(x,y,z):
return x,8*y,z
print(type(test(1,3,5)))
4.函数内存分布
4.1 创建函数
创建函数流程步骤:
- python中通过 def 来创建函数对象,存在堆内存中
- 然后把地址赋给变量(函数名)存储在栈内存中
- 等待被调用
#定义一个函数打印出字符串每个字母”
def print_word(word):
for i in word:
print(i)
4.2 函数对象
Python中,一切皆是对象,实际上执行def定义函数后,系统创建来相应的函数对象。
# 调用 函数 print_word() 打印Judging
str = "JueJing"
c = print_word(str)
print(c)
总结
本期介绍来函数的基本概念,及函数内存浅析,下次我们学习函数参数相关的内容。
好啦,以上是本期内容,欢迎大佬在评论区指正。