函数的定义与调用
1.函数的概念
函数就是实现某一特定功能的代码的封装
2.函数的分类
根据函数是由谁定义(创建的)将函数分为:系统函数、自定义函数
1)系统函数 - 系统自带的函数(创建python语言的人创建好的函数)(别人造好的机器)
2)自定义函数 - 由程序员自已创建的函数(自已造的机器)
3.定义函数(创建函数) - 造机器
语法:
def 函数名(形参列表):
函数说明文
函数体
说明:
def - 关键字;固定写法
函数名 - 由程序员自已命名;
要求:标识符、不是关键字
规范:见名知义(看到函数名大概就知道函数的功能)、所有字母都小写,多个单词用_下划线隔开、不使用系统的函数名、类名和模块名
(): - 固定写法
形参列表 - 以’变量名1、变量2、变量3,…'的形式存在,这儿的一个变量代表一个形参(也可以一个形参都没有)
形参可以函数外部的数据传递到函数里面
定义函数的时候需不需要形参就看实现函数的功能需不需要额外的数据
函数说明文档 - 本质就是多行注释(想当于机器的说明书)
函数体 - 和def保持一个缩进或者多条语句
函数体就是实现函数功能的代码
4.初学者定义函数的基本步骤
第一步:确定函数功能
第二步:确定函数的名字
第三步:确定参数(看实现函数的功能需不需要额外的数据,需要几个)
第四步:实现函数功能
第五步:写函数说明文档
#定义一个函数求10的阶乘
def factorial_10()
"""
(功能说明)求10!
return(返回值说明区)NOne
"""
sum1=1
for x in range(1,11)
sum1*=x
print(sum1)
#定义一个函数求任意一个的阶乘
def factorial(num):
"""
求一个数的阶乘
num:(参数说明)需要求阶乘的数
retur:None
"""
sum1=1
for x in range(1,num+1):
sum1*=x
print(sum1)
#定义一个函数求任意两个数的和
def sum_yt(num1,num2):
"""
求任意两个数的和
"""
print(num1+num2)
练习1:定义个函数统计字符串中中文的个数
练习2:写一个函数,提取列表中所有的数字元素
练习3:写一个函数,获取指定字典所有的值
练习4:写一个函数统计指定字符串另外一个字符串出现的次数
练习5:写一个函数将两个列表中合并成一个字典(第一个列表的元素是键,第二个列表的元素是值)
函数的调用
1.调用函数 - 使用机器
语法:
函数名(实参列表)
说明:
函数名 - 需要调用的函数的函数名(必须是已经定义过的函数的函数名)
() – 固定写法
实参列表 - 以’数据1,数据2,数据3,…'的形式存在
实参是用来给形参赋值,实参是真在从函数外部传递到函数内部的数据
注意:同一个函数可以在需要它的功能的是反复调用
2.函数调用过程
1)定义函数不好指定函数,调用函数的时候才会执行函数体
2)执行过程
第一步:回到函数定义的过程
第二步:传参(用实参给形参赋值)
第三步:执行函数体
第四步:确定函数返回值
第五步: 回到函数调用的位置,接着往后执行
函数的参数
1.位置参数和关键字参数 - 实参
1)位置参数
以’数据1、数据2、数据,…'的形式存在,让实参和形参从位置上一一对应
(第一个实参给第一个形参赋值,第二实参给第二个形参赋值,…)
def func1(x,y,z):
print(f'x:{x},y:{y},z:{z}')
func1(10,20,30)
func1(20,10,30)
2)关键字参数
形参1=实参1, 形参2=实参2,...'的形式存在
func1(x=100,y=200,z=300)
func1(y=200,z=300,x=100)
3).混用
如果位置参数和关键字参数一起用,那么位置参数必须在关键字参数的前面
2.参数默认值 - 形参
定义函数的时候可以用’形参=值’的方式给参数赋默认值;
调用函数的时候有默认值的参数可以不用传参
如果定义函数的时候有的参数有默认值,有的参数没有默认值,没有,默认值的参数必须放在有默认值参数的前面
3.参数类型说明: - 形参
情况1:没有默认值的参数u,在参数后加’:类型名
情况2:有默认值的参数,值的类型就是参数的说明类型
def func5(str1):
str1.rep
4.*不定长参数
1)带*的不定长参数
在定义函数的时候可以在某个参数前加*,那么这个带*的参数就是一个不定长参数,可以同时接收多个实参。
带*的参数会自动变成一个元组,接收到实参是元组中的元素。
调用的时候带*的不定长参数必须用位置参数传参
2)带**的不定长参数(了解)
# 思考:一个函数可不可以既有不定长参数又参数?如果可以有没有什么问题存在(需要注意的地方)?
# 定长在不定长前面,都使用位置参数
# 定长在不定长后面,定长必须使用关键字参数
def func7(*x, y):
print(f'x:{x}, y:{y}')
func7(10, 20, 30, 40, y=50)
# 这儿*的作用只是强迫调用func8的时候,b和c必须使用关键字参数传参
def func8(a, *, b, c):
pass
# 练习:定义一个参数可以求多个数的和
# sum1(10, 20)
# sum1(10, 20, 30)
# sum1(90, 8, 78, 27, 17)
函数返回值
1.返回值
1)返回值的意义:返回值就是从函数内存传递到函数外部的数据
2)怎么确定函数返回值:返回值就是return关键字后面的表达值(执行函数体的是如果遇到return,return后面是什么,函数返回值就是什么)
如果没有遇到return,返回值None
3)怎么使用函数返回值
函数调用表达式的值就是函数的返回值,所有返回值能做到事情,函数调用表达式都可以做
函数调用表达式 – 调用函数的语句
def fun1():
print(‘abc’)
return 100
2.return的作用
作用1:确定函数返回值
作用2:提前结束函数 - 如果执行函数体的时候遇到return,函数直接结束
def func4():
print()
if num==0:
return 0
reslult=func4(0)
print(reslut)