✨python✨---函数参数的传递

91 阅读3分钟

函数参数的传递

形式参数(形参):定义函数设置的参数。

实际参数(实参):调用函数传入的参数。

函数参数的传递是指将实参传递给形参的过程。

位置参数的传递

示例如下:

print("-----------------参数传递----------------")
print("-------------位置参数的传递--------------")
def get_max(a,b):
    """比较a和b的大小"""
    if a>b:
        print(a,"比较大")
    else:
        print(b,"比较大")
get_max(5,28)

结果如下:

image.png

关键字参数的传递

“形参=实参”,将 实参 按照对应的“关键字”传递给 形参。

示例如下:

print("-------------关键字参数的传递-------------")
def connect(ip,port):
    """连接设备"""
    print(f"设备{ip}:{port}连接")
connect(ip="127.0.01",port=8080)

结果如下:

image.png

默认参数的传递

函数定义时可以指定形参的默认值,调用可以直接用默认值,也可以修改。

注意:默认形参后面不能有非默认形参!!!!!

示例如下:

print("-------------默认参数的传递-------------")
def connect(ip,port=8080):
    """连接设备"""
    print(f"设备{ip}:{port}连接")
connect(ip="127.0.02")
connect(ip="127.0.03",port=3306)

结果如下:

image.png

参数的打包与解包

1.打包:

函数定义时无法确定接收多少个数据,将多个实参打包成一个元组或字典,在函数调用时将其作为一个整体传递给形参。如果形参的前面加上*”,那么它可以接收以元组形式打包的多个值;如果形参的前面加上“**”, 那么它可以接收以字典形式打包的多个值。

①"*args"或"**kwargs"。

2.解包:

使用特殊语法将元组或字典拆分为多个值并赋给对应的形参。

①函数调用时接收实参是元组,使用"*"。

②函数调用时接收实参是字典,使用"**",接收值。

示例如下:

print("------------参数的打包与解包-----------")
print("---------打包---------")
def test(*args):
    print(args)

test("Python","a",23,56)

print("----------解包--------")
def test(a,b,c,d,e):
    print(a,b,c,d,e)

nums = (12,22,33,44,55)
test(*nums)

nums = {"a":12,"b":22,"c":33,"d":44,"e":55}
test(**nums)

结果如下:

image.png

混合参数

示例如下:

# 位置参数,默认参数,*args,关键字-only参数,**kwargs
# 仅关键字参数
# 定义优先级
print("-----------混合传递---------")
def func(a, b=2,*args,c,**kwargs):
    print(a,b,args,c,kwargs)

# 正确调用
func("A","B","Math","Science",c="C",city="Hubei")

结果如下:

image.png

  • 错误调用1:缺少必要的关键字参数

    func("A","B","Math","Science")

  • 错误调用2:重复传参

    func("A",b="B",e ="Math",b=16)

  • 错误调用3:位置参数在关键字参数之后

    func(a="A",b="B","Math","Science")