函数参数的应用

函数参数的应用

形参和实参

  • 形参就是函数在定义的时候,括号里的参数称为形式参数,本质就是变量名
  • 实参就是函数在调用的时候输入的参数,本质就是变量值
def self_max(x, y):   # x,y就是形参
    if x > y:
        return x  
    else:
        return y

print(self_max(2,6))   # 2,6就是实参
6

位置参数

  • 位置形参就是在函数定义阶段,按照从左到右的顺序依次定义的形参,称之为位置形参

    • 特点:按照位置定义的形参,都必须被传值,多一个不行,少一个也不行

  • 位置实参就是在函数调用阶段,按照从左到右的顺序依次定义的实参,称之为位置实参

    • 特点:按照位置为对应的形参依次传值

关键字实参

  • 在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参

    1. 可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边。

    2. 可以混用位置实参和关键字实参,但不能对一个形参重复赋值。

def self_max(x, y):
    if x > y:
        return x  
    else:
        return y

res = self_max(y=2,x=6)
print(res)
6

默认形参

  • 在定义阶段就被赋值

特点:在定义阶段就已经被赋值,意味着在调用时可以不用为其赋值
注意:

  1. 位置形参必须放在默认形参的左边。
  2. 默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了
def self_max(x, y=26):
    if x > y:
        return x  
    else:
        return y

res = self_max(y=2,x=6)
print(res)

res = self_max(3)
print(res)
6
26

可变长参数

可变长参数是指在调用函数时,传入的参数个数可以不固定

函数调用无非两种方式,一种是位置实参,一种是关键字实参,因此形参也需要两种解决方式,以此来接收位置实参(*)和关键字实参(**)

可变长之形参*

形参中的*会将溢出的位置实参全部接受,然后以元组的形式赋值给*后的参数。

  • 注意:*后的参数名约定俗成为args
def func(x,*args):
    print(x,args)
    
func(1,4,2)
1 (4, 2)

可变长实参之*

实参中的,会将中的参数循环取出,打散成位置实参。

def func(x,*args):
    print(x,args)
    
func(*(1,2),4)      # 将(1,2)打散为1,2传给x,y
1 (2, 4)

可变长形参之**

形参中的**会将溢出的关键字实参全部接受,然后存储为字典的形式,再赋值给**的参数

  • 注意:**后的参数约定俗成为kwargs
def wrapper(**kwargs):
    print(kwargs)
    
wrapper(name='hades',age=27,weight=125)
{'name': 'hades', 'age': 27, 'weight': 125}

可变长实参之**

实参中的**会将传入的字典打散成关键实参传给形参

def func(x,y,z):
    print(x,y,z)

func(**{'y':4,'x':3,'z':5})
3 4 5
原文地址:https://www.cnblogs.com/Hades123/p/10997835.html