讲怔 发表于 2025-8-20 08:01:56

6.3 函数参数的应用与可变长参数

6.3 函数参数的应用与可变长参数

6.3.1 函数参数的应用


[*]函数分为两个阶段

[*]定义阶段:定义阶段的x,y称为形参,形参应具有描述意义,不为具体数据类型。
[*]调用阶段:调用阶段的x,y称为实参,实参必须有值,是具体的数据类型。
[*]形参与实参关系:形参接收实参

def self_max(x,y): #形参
    #参数无提示,应具有描述意义 例如num1,num2
   if x > y:
         return x
   return y
   
   
self_max(10,20) def guess_age(age): #缺点:每次都要传参,因此可以设置默认形参
   inp_age=input()

   if age==inp_age:
         print('y')
   else:
         print('n')

guess_age(18)
[*]形参(函数定义阶段)


[*]默认形参:值不需要改变,在定义阶段,提前赋值给形参;实参传值的时候,实参传的值会覆盖默认值,经常使用。
[*]位置形参:按位置接收实参的形参。
[*]位置先后顺序:默认形参必须在位置形参后面。
def guess_age(age=18): #设置默认形参
      
   inp_age=int(input())

   if age==inp_age:
         print('y')
   else:
         print('n')

guess_age(20) #实参20被传入会覆盖默认形参age原来的值,age=20

# 默认形参必须在位置形参后面
def self_max(x,y,z=5): #x,y位置形参,z:默认形参
   # or (x,y=5,z=10)√、(x=5,y,z=20)×
   return x,y,z

print(self_max(10,1,3))
#输出:(10, 1, 3)
[*]实参(函数调用阶段)


[*]关键字实参

[*]适用场景:适用于函数参数较多的情况,关键字实参必须在位置实参后面。
[*]运用方法:在函数调用阶段找到与形参的对应关系,并赋值给对应的形参
[*]关键字实参名:形参名为什么,则关键字实参名也必须是什么

[*]位置实参:传参默认按照顺序。
[*]位置先后顺序:关键字实参必须在位置实参后面。
def self_max(x,y):
    if x>y:
      return x
    else:
      return y
x=self_max(10,20) #位置实参,传参默认按照顺序
result=self_max(y=10,x=20) #关键字传参

print(result) def self_max(x,y,z):
   print(x,y,z)

self_max(10,10,z=3)# 关键字实参必须在位置实参后面6.3.2 可变长参数

参数多时,使用关键字参数,但还是较麻烦。

[*]可变长形参(函数定义阶段)


[*]*args:在函数定义阶段,接收所有位置实参,不接收关键字实参。
[*]**kwargs:在函数定义阶段,接收所有关键字实参,以字典形式保存下来。
[*]命名规范:

[*]*a、**b 也是可以的
[*]但 *args、**kwargs 是约定俗称的一种规范。

def self_max(*args): #*args接收所有位置参数
   print(a,type(args))

self_max(1,2,3,5,6,8,8) def self_max(*args,**kwargs): #**kwargs 接收所有关键字实参,以字典形式保存下来{'x':8,'y':20}
   print(args,type(args))
   print(kwargs,type(kwargs))

self_max(1,2,3,5,6,8,8,x=8,b=20)
[*]可变长实参(函数调用阶段)


[*]*args:

[*]*把这个元组内的元素取出来,然后按位置对应传给位置形参。(这个过程也是解压缩的过程)
[*]对默认参数也有效,取出的值可以覆盖默认参数。

[*]**kwargs:

[*]会把字典打散成键值对的形式作为实参传给关键字形参。

def self_max(a,b,c,d,e,f):
   print(a,b,c,d,e,f)

args=(1,2,3,4,5,6)
self_max(*args)
   
# self_max(*args)=self_max(1,2,3,4,5,6)def self_max(a,b,c,d,e,f,g=1,h=3):
    print(a,b,c,d,e,f,g,h)
a=(1,2,3,4,5,6)
b={'g':8,'h':9}
self_max(*args,**kwargs)

# self_max(**kwargs)相当于self_max(g=8,h=9)
# self_max(*arg,**kwargs):相当于self_max(1,2,3,4,5,6,g=8,h=9) def self_max(a,b,c,d,e,f,g=1,h=3):
   print(a,b,c,d,e,f,g,h)
args=(1,2,3,4,5,6,7)
self_max(*args) #对默认参数也有效,取出的值可以覆盖默认参数。
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除
页: [1]
查看完整版本: 6.3 函数参数的应用与可变长参数