1、函数的定义
# 解释:在java中就是方法,python类外叫函数,python类里面的叫方法
# 1.1 先定义一个带参的函数
def function(name):
print(f"你好啊,{name}!")
# 1.2然程序调用function这个函数,并且传一个参数给它
function("刘艳")
# 1.3 运行程序后输出如下:
# 你好啊,刘艳!
2、实参和形参
# 形参 :在1.1中的 def function(name): 中的name就是新参,即函数完成工作所需要的信息
# 实参 :在1.2中的 function("刘艳") 中的"刘艳"就是实参,即调用函数是传递给函数的信息,将实参"刘艳"传递给了函数function(),这个值赋给了形参
3、传递实参
# 1 、函数定义中可能有多个形参,因此函数调用中可能包含多个实参
# 2、 向函数传递实参的方式有很多
# 2.1、可以使用位置实参:这个要求实参顺序和形参的顺序相同
# 2.1、 可以使用关键字实参:其中每个实参都由变量名和值组成
# 3、还可以使用字典和列表作为参数去传
4、位置实参
# Python必须将函数调用中的每个实参都关联到函数定义的中的一个形参
# 最简单的关联方式是基于实参的顺序,这种关联方式叫做位置实参
# 在形参没有默认值的时候必须要有实参传给形参,缺少实参的传入,会报错【缺少 x 个必需的位置参数】,传多了也会报错【会告诉你多传了一个参数】
# 位置实参的顺序很重要:如果实参的顺序放错了,你预期的结果就会错
def user(name, like):
print(f"{name}喜欢{like}")
user("刘艳", "运动")
# 输出结果:刘艳喜欢运动
user("张三", "李四")
# 输出结果:张三喜欢李四
# user("王五") # 少了一个实参
# 输出结果:会报错
# TypeError: user() missing 1 required positional argument: 'like'
# 翻译:类型错误:user() 缺少 1 个必需的位置参数:'like'
# user("王五", "溜冰", "7777") # 多了一个实参
# 输出结果:会报错
# TypeError: user() takes 2 positional arguments but 3 were given
# 类型错误:user() 需要 2 个位置参数,但给出了 3 个
5、关键字实参
# 注意:使用关键字实参时,务必准确的指定函数定义中的形参名
# 关键字实参的顺序无关紧要
# 关键字实参是传递给函数的名称值对,向函数传递参数时不会混淆,还清楚的指出函数调用的各个值的用途
def users(name, like):
print(f"{name}喜欢{like}")
users(name="刘艳", like="运动")
users(like="运动", name="刘艳")
# 上面2个函数调用是等价的 输出结果都为:刘艳喜欢运动
6、默认值
# 可以在函数定义中的形参指定默认值
# 如果显示的给形参传了实参,那么python会忽略这个形参的默认值, 如果实参没有传会默认使用默认值
# 注意:使用默认值时,必须现在形参列表中列出没有默认值的形参
# 过于简单不错讲解
# 注意: 函数中部分形参没有默认值,在调用的时候实参必须得传给没有默认值的形参