1.什么是函数
- 函数就是对实现对某一特定功能的代码段的封装
2.函数的分类
内置函数(系统函数):python已经实现的函数,程序员直接用,例如:print()等等
相当于系统造好的机器
-
自定义函数:程序员自己定义的函数,相当于自己造机器,
3. 函数的定义(声明)
1)语法:
def 函数名(参数列表):
函数体
2)说明:
def - 声明函数的关键字,固定写法
函数名 - 要求:标识符不能是关键字
规范:见名知意(看到函数名大概知道函数的功能)
所有的字母用小写,多个单词用_隔开,不能和系统的函数名重名
() - 固定写法
参数列表 - 形参1,形参2,形参3,,,,,;这儿的参数形参,可以有可以没有,可以有多个
变量名1,变量名2,变量名3,,,这儿的参数形参,可以有可以没有,可以有多个
形参的功能是将外面的数据传递到函数里面
: - 固定写法
函数体 - 必须和def保持一个缩进的代码段:
函数体分为函数说明文档和,实现函数功能的代码段两个部分
3)初学者声明函数的步骤:
第一步:确定函数的功能
第二步:根据功能确定函数的名字
第三步: 确定参数(就是确定需不需要参数,需要几个参数)
看实现函数的功能,需不需要从函数外面传值,如果需要,需要几个
第四步:实现函数的功能
第五步:确定返回值(暂时不管)
!!! 4.函数体在函数声明的时候不会执行(重要)
-
调用函数的时候才会执行函数体
5.函数调用 - 使用机器
1)语法:
函数名(参数列表/实参列表)
2)说明()
函数名 - 必须是声明过的函数
() - 固定写法
参数列表 - 这的参数叫四参;实参是用来给形参赋值的
值1,值2,值3
# 写一个函数 ,功能是计算两个数的和
# 声明函数需要两个换行,
def yt_sum( n1, n2):
"""
函数功能的说明:求两个数的和
:param n1: 参数说明:int 数字
:param n2:
:return: 返回值说明: None
"""
print(n1+ n2)
yt_sum(1,99)
yt_sum(12345,34567)
#写一个函数,功能是求一个数的1*2*3*....*n的和
def yt_mur(n):
"""求一个数的1*2*3*....*n的"""
sum1 = 1
for i in range(1,n+1):
sum1= sum1* i
print('乘积',sum1)
yt_mur(8)
#写一个函数功能是打印10个*
def yt_print():
print('*'*10)
yt_print()
1.函数的调用过程(重要)!!!
函数在声明的时候不执行函数体,调用的函数的时候才会执行函数体
- 函数的调用过程:
- 1)先回到函数声明的位置
- 2)用实参给形参赋值(传参) - 传参要保证每个参数都有值
- 3)执行函数体
- 4)执行完函数体再回到函数调用的位置,接着往后执行
2.函数的参数
1)根据实参的写法将参数分为位置参数和关键字参数
位置参数:让实参的位置和形参一一对应,然后保证每个形参都有值
关键字参数:实参列表 以,‘形参名1=值1’,形参名2=值2,的方式来调用函数在这形参的顺序可以和声明的形参的顺序不同
!!!注意:位置参数和关键字参数混用,位置参数必须在关键字参数前面
关键字参数
def qq(a,b,c):
print(a,b,c)
qq(b=11,c=22,a=33)
位置参数和关键字参数混用
2) 参数默认值
- 声明函数的时候函数的形参可以设置默认值。
!!!注意:如果有默认值和没有默认值的形参混用,没有默认值的要放前面
- 有默认值的的参数,调用的时候可以不用传参,没有默认值的参数,调用的时候必须传参
- 当我传参的时候,需要跳过某个或几个有默认值的参数的时候,后面的参数必须使用关键字参数
def func2(d=1,e=2,f=3):
"""
:param d:
:param e:
:param f:
:return:
"""
print(d,e,f)
func2()
3)参数类型的说明
- a,给参数设置默认值,默认是什么类型,参数计算什么类型
- b, 以参数名’类型名‘的方式什么参数类型
def coun1(lb:list,bb):
"""
统计列表 bb的个数
:param lb:
:param bb:
:return:
"""
bb1 = 0
for i in lb:
if i == bb:
bb1+=1
print(bb1)
coun1([1,2,3,4,5,6,78,4,32,5,5,5,5,6],6)
4)不定长参数
- a,声明函数的时候在形参前加一个*,可以将这个形参变成元祖,然后同时接受多个实参的值,可以同时接受多个位置参数的值
- b.声明函数的时候,在形参前面加**,可以将这个形参变成字典,可以同时接受多个关键字参数的值)# 可以同时接受多个关键字参数的值)
!!!注意:原则上一个函数的参数中既可以有定长的,也可以有带一个的不定长,和带两个的的不定长; 如果同时存在一个带参数和两个带*参数,带一个的参数要放前面
!!!注意:一般情况下:一个函数中可以同时有定长参数和不定长参数,
- 不定长参数要放后面 ,如果出现定长参数出现在不定长参数后面,需要用到关键字参数
def sum2(*num1):
print(num1)
sum2(1,2,3,4,5)
sum2(1,2,3)
sum2(1,2,3,4,5,6,6)
# 练习 写一个函数求多个和,要求调用函数的时候既可以使用位置参数传参,
#也可以用关键字传参
def snm4(*a,**b):
a1 = 0
for i in a:
a1 = a1 + i
for i1 in b:
a1 = a1 + b[i1]
print(a1)
snm4(1,2,3,4,d=1,e=6)
1.什么是返回值
- 返回值的作用是将函数体中产生的数据传递到函数外面
- 返回值就是函数调用表达式的值,就是return关键字后面的值
!!!注意:a.函数调用表达式 - 调用函数的语句;他的结果就是这个函数的返回值:
通过函数调用表达式来换取函数的返回值
2.return关键字
return 只能出现在函数体中!:
- 当执行函数体的时候遇到return,函数直接结束,并且会将return后面的值作为函数的返回值返回;
- 如果执行函数体的时候没有遇到return,函数的返回值是:None
3.函数的调用过程(完整版)死记!!!!!!!!!!
1)先回到函数声明的位置
2)用实参给形参赋值 - 传参(保证每个参数都有值)
3)执行函数体
4)执行完函数体,确定返回值(执行完函数体中所有的语句,没有遇到return
就确定返回值就是None;执行过程中遇到return
就是return后面的值)
5)回到函数调用的位置,接着往后执行。(此时函数调用表达式的值才是还是的返回值)
"""
# 4.什么时候需要有返回值
# 初学者的建议:只要函数的功能产生了新的数据,
# 就可以把这个数据用返回值返回
# python函数里可以有多个 返回值:return后面给多个值,用逗号隔开