Python笔记——函数

本文详细探讨了Python中的函数,包括其在代码复用和维护中的作用,如何定义、调用函数,以及各种参数传递方式,如位置传参、关键字传参、字典关键字传参等。此外,还介绍了形参定义的各种方式,如缺省参数、位置形参、星号元组形参、命名关键字形参和双星号字典形参,并强调了参数的传递顺序。最后,讨论了函数的返回值及其重要性。

函数 function

  1. 用于封装一个特定的功能,表示一个功能或者行为。
  2. 函数是可以重复执行的语句块, 可以重复调用。
作用

提高代码的可重用性和可维护性(代码层次结构更清晰)。

定义函数
  1. 语法:
    def 函数名(形式参数):
    函数体
  2. 说明:
    def 关键字:全称是define,意为”定义”。
    函数名:对函数体中语句的描述,规则与变量名相同。
    形式参数:方法定义者要求调用者提供的信息。
    函数体:完成该功能的语句。
  3. 函数的第一行语句建议使用文档字符串描述函数的功能与参数。
调用函数
  1. 语法:函数名(实际参数)
  2. 说明:根据形参传递内容。
# 创建函数
def attack():
    """
        攻击
    """
    print("直拳")
    print("勾拳")
    print("侧踹")


# 参数:调用者  给  创建者 传递的信息
#      创建者 要求 调用者 提供的信息
def attack_repeat(count):  # 形式参数
    """
        重复攻击
    :param count:  int类型的 攻击次数
    """
    for __ in range(count):
        attack()


# 调用函数
attack()
attack_repeat(3)  # 实际参数
attack_repeat(10)
返回值
  1. 定义:
    方法定义者告诉调用者的结果。
  2. 语法:
    return 数据
  3. 说明:
    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
位置传参

定义:实参与形参的位置依次对应。

序列传参

定义:实参用*将序列拆解后与形参的位置依次对应。

关键字传参

定义:实参根据形参的名字进行对应。

字典关键字传参
  1. 定义:实参用**将字典拆解后与形参的名字进行对应。
  2. 作用:配合形参的缺省参数,可以使调用者随意传参。
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
缺省参数
  1. 语法:
    def 函数名(形参名1=默认实参1, 形参名2=默认实参2, …):
    函数体
  2. 说明:
    缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
    缺省参数可以有0个或多个,甚至全部都有缺省参数。
位置形参

语法:
def 函数名(形参名1, 形参名2, …):
函数体

星号元组形参
  1. 语法:
    def 函数名(*元组形参名):
    函数体
  2. 作用:
    收集多余的位置传参。
  3. 说明:
    一般命名为’args’
    形参列表中最多只能有一个
命名关键字形参
  1. 语法:
    def 函数名(*, 命名关键字形参1, 命名关键字形参2, …):
    函数体
    def 函数名(*args, 命名关键字形参1, 命名关键字形参2, …):
    函数体
  2. 作用:
    强制实参使用关键字传参
双星号字典形参
  1. 语法:
    def 函数名(**字典形参名):
    函数体
  2. 作用:
    收集多余的关键字传参
  3. 说明:
    一般命名为’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}
参数自左至右的顺序

位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值