函数 function
- 用于封装一个特定的功能,表示一个功能或者行为。
- 函数是可以重复执行的语句块, 可以重复调用。
作用
提高代码的可重用性和可维护性(代码层次结构更清晰)。
定义函数
- 语法:
def 函数名(形式参数):
函数体 - 说明:
def 关键字:全称是define,意为”定义”。
函数名:对函数体中语句的描述,规则与变量名相同。
形式参数:方法定义者要求调用者提供的信息。
函数体:完成该功能的语句。 - 函数的第一行语句建议使用文档字符串描述函数的功能与参数。
调用函数
- 语法:函数名(实际参数)
- 说明:根据形参传递内容。
# 创建函数
def attack():
"""
攻击
"""
print("直拳")
print("勾拳")
print("侧踹")
# 参数:调用者 给 创建者 传递的信息
# 创建者 要求 调用者 提供的信息
def attack_repeat(count): # 形式参数
"""
重复攻击
:param count: int类型的 攻击次数
"""
for __ in range(count):
attack()
# 调用函数
attack()
attack_repeat(3) # 实际参数
attack_repeat(10)
返回值
- 定义:
方法定义者告诉调用者的结果。 - 语法:
return 数据 - 说明:
return后没有语句,相当于返回 None。
函数体没有return,相当于返回None。
def func01():
print("func01执行喽~")
return 100 # return 数据
re = func01()
print(re)
def func02():
print("func02执行喽~")
# return # return后没有数据或者没有return ,默认为None
re = func02()
print(re)
def func03():
print("func03执行喽~")
return # 退出函数
print("func03又执行喽~")
func03()
def add(number01,number02):
"""
两个数值相加
:param number01: 数值1
:param number02: 数值2
:return:数值类型,相加的结果
"""
result = number01 + number02
return result
# 测试
n1 = float(input("请输入第一个数字:"))
n2 = float(input("请输入第二个数字:"))
re = add(n1,n2)
print("结果是:"+str(re))
函数参数
实参传递方式argument
位置传参
定义:实参与形参的位置依次对应。
序列传参
定义:实参用*将序列拆解后与形参的位置依次对应。
关键字传参
定义:实参根据形参的名字进行对应。
字典关键字传参
- 定义:实参用**将字典拆解后与形参的名字进行对应。
- 作用:配合形参的缺省参数,可以使调用者随意传参。
def func01(p1, p2, p3):
print(p1)
print(p2)
print(p3)
# 1.位置实参:位置
func01(1, 2, 3)
list01 = ["a", "b", "c"]
# 2. -- 序列实参:拆
func01(*list01)
# dict01 = {"a": 1, "b": 2, "c": 3}
# func01(*dict01)只传入key,所以没意义
# 3.关键字实参:名字
func01(p3=3, p2=2, p1=1)
# 4.字典实参:拆
dict01 = {"p1": "a", "p2": "b", "p3": "c"}
func01(**dict01)
形参定义方式parameter
缺省参数
- 语法:
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, …):
函数体 - 说明:
缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
缺省参数可以有0个或多个,甚至全部都有缺省参数。
位置形参
语法:
def 函数名(形参名1, 形参名2, …):
函数体
星号元组形参
- 语法:
def 函数名(*元组形参名):
函数体 - 作用:
收集多余的位置传参。 - 说明:
一般命名为’args’
形参列表中最多只能有一个
命名关键字形参
- 语法:
def 函数名(*, 命名关键字形参1, 命名关键字形参2, …):
函数体
def 函数名(*args, 命名关键字形参1, 命名关键字形参2, …):
函数体 - 作用:
强制实参使用关键字传参
双星号字典形参
- 语法:
def 函数名(**字典形参名):
函数体 - 作用:
收集多余的关键字传参 - 说明:
一般命名为’kwargs’
形参列表中最多只能有一个
# 1. 位置形参:必选
def func01(p1, p2, p3):
print(p1)
print(p2)
print(p3)
# 2. 默认形参:可选
def func02(p1=True, p2="", p3=0):
print(p1)
print(p2)
print(p3)
func02()
func02(False, "a", 10)
func02(p2="A")
func02(False, p3="1")
# 3. 星号元组形参:合(位置实参)
# 备注:以args命名
def func03(*args):
print(args)
func03()
func03(34, 123, 1, 5)
list01 = [34, 123]
func03(*list01)
# func03(a=1,b=2)
# 4. 命名关键字形参:必须使用关键字实参
# 星号元组形参后面的位置形参是命名关键字形参
def func04(*args, p1, p2=0):
print(args)
print(p1)
print(p2)
func04(p1=0)
# p1位置参数 p2命名关键字形参
# 星号后面的位置参数是命名关键字形参
def func05(p1, *, p2):
print(p1)
print(p2)
func05(0, p2=6)
# 5. 双星号字典形参:合(关键字实参)
# 备注:以kwargs命名
def func06(**kwargs):
print(kwargs)
func06()
func06(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}
参数自左至右的顺序
位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参
本文详细探讨了Python中的函数,包括其在代码复用和维护中的作用,如何定义、调用函数,以及各种参数传递方式,如位置传参、关键字传参、字典关键字传参等。此外,还介绍了形参定义的各种方式,如缺省参数、位置形参、星号元组形参、命名关键字形参和双星号字典形参,并强调了参数的传递顺序。最后,讨论了函数的返回值及其重要性。
1161

被折叠的 条评论
为什么被折叠?



