函数的可变参数与关键字参数

本文深入探讨了Python中函数参数的使用,包括可变参数和关键字参数。通过实例展示了如何通过可变参数传递任意数量的参数,以及如何使用关键字参数指定参数名。文中还涉及到对集合的遍历和转换,以及不同数据结构在函数参数中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文主要介绍函数中的参数


提示:以下是本篇文章正文内容,下面案例可供参考

一、可变类型和不可变类型的差别?

此时列表1发生改变,列表2的值也会发生改变

list1 = [1,3,5,8,9,0]
list2=list1

list1.remove(5)

print(list2)

二 集合转换成带下标的形式

enumerate 函数

s= {1,3,5,7,8,9}
for i in s:
    print(i)
for index ,i in enumerate(s):
    print(index,i)
print(enumerate(s))

结果:
0 1
1 3
2 5
3 7
4 8
5 9

三 使用空列表的方式遍历集合和带下标的方式

s= {1,3,5,7,8,9}
list1=[]
index=0
for i in s:
    t1=(index,i)
    list1.append(t1)
    index+=1
print(list1)

print('-------------------')
for index,value in list1:
    print(index,value)

结果:
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 8), (5, 9)]

0 1
1 3
2 5
3 7
4 8
5 9

四、使用函数定义的方式


def enumerate(value):
    list1 = []
    index = 0
    for i in s:
        t1 = (index, i)
        list1.append(t1)
        index += 1
    print(list1)

s={2,5,6,8,0,7}
enumerate(s)

结果:
[(0, 0), (1, 2), (2, 5), (3, 6), (4, 7), (5, 8)]

五.函数的参数

1.可变参数—即其后的参数可以放很多

在这里插入图片描述

#可变参数

def add(a,b):
    pass
add(1,3)

#定义方式:
def add(name,*args): #argument 声明  #name,*args='飞飞',4,6,8
    print(args)  # ()空元组
    sum=0
    if len(args)>0:
        for i in args:
            sum+=i
        print('%s累加和为:sum:%s'%(name,sum))
    else:
        print('没有值可以计算,sum:',sum)


add('飞飞',4,6,8)

add('阿文',10) # name,age,*args='阿文',10
#a,*b =(1,3,4,5,6)
add('学强')
#注意: 可变参数必须放在后面:

2.关键之参数

代码如下(示例):

在这里插入图片描述

# 可变参数-关键字参数
# 关键字参数: key=value

def add(a,b=10): # 关键字参数
    result=a+b
    print(result)

#调用
add(10)

add(1,7) #a=4,b=7  #此时7就会覆盖b原来的默认值

def add1(a,b=10,c=4):
    result=a +b +c
    print(result)

add1(1)

add1(1,10) # 是给b赋值成功)

## 给c赋值而不是给b赋值
add1(2,6) # 默认6是赋值给b了
add1(2,c=6)  # 如果想将6赋值给6,则需要结合关键字的key使用

案例1:

# 函数: 打印每位同学姓名和年龄
students={'001':('蔡徐坤',20),'002':('王源',19),'003':('王俊凯',20),'004':('易烊千玺',19)}
def print_boy(name,**persons): #persons=students
    print('{}喜欢的小鲜肉是'.format(name))
    if isinstance(persons,dict):
        for name,age in  persons.values():
            print('{}的年龄是:{}'.format(name,age))

#调用
print_boy('琪琪',**students)

琪琪喜欢的小鲜肉是
蔡徐坤的年龄是:20
王源的年龄是:19
王俊凯的年龄是:20
易烊千玺的年龄是:19

案例2

def func(a=1,b=2,c=3):
    print(a,b,c)

func()

def func1(**kwargs):  # key word argument
    print(kwargs)

#调用
func1(a=1,b=2,c=3) #关键字参数

func1()

func1(a=1) #{'a':1}

func1(a=1,b=2)

dict1={'001':'python','002':'java','003':'c语言','004':'go'}

func1(**dict1)

结果:
1 2 3
{‘a’: 1, ‘b’: 2, ‘c’: 3}
{}
{‘a’: 1}
{‘a’: 1, ‘b’: 2}
{‘001’: ‘python’, ‘002’: ‘java’, ‘003’: ‘c语言’, ‘004’: ‘go’}

案例3:
在这里插入图片描述

'''

使用函数的时候:
def aa(**kwargs):
   pass
'''

def aa(**kwargs):
    print(kwargs)


aa(a=1,b='hello',c='tom') #装包 {'a':1,'b':'hello','c':'tom'}

# 如果在开发的时候,已知一个字典

dict1={'a':1,'b':'hello','c':'tom'}

aa(**dict1) #a=1, b='hello',c='tom' 拆包的过程

def bb(a,b,*c,**d):
    print(a,b,c,d)
bb(1,2)  #1 2 () {}

bb(1,2,3,4)

bb(1,2,x=100,y=200) #1,2 {'x':100,'y':200}

bb (1,2,3,x=100) # 1 2 (3,) {'x':100}

#bb(1,2,x=100,5,6)

bb(1,2,x=100,y=200,z=100)

结果:
{‘a’: 1, ‘b’: ‘hello’, ‘c’: ‘tom’}
{‘a’: 1, ‘b’: ‘hello’, ‘c’: ‘tom’}
1 2 () {}
1 2 (3, 4) {}
1 2 () {‘x’: 100, ‘y’: 200}
1 2 (3,) {‘x’: 100}
1 2 () {‘x’: 100, ‘y’: 200, ‘z’: 100}

总结

'''
练习:
1.
def func(a,*args):
   print(a,args)

调用:
func(2,3,4,5,6)          # 2 (3,4,6)
func(2,[1,2,3,4])
func(2,3,[1,2,3,4,5])
func(5,6,(4,5,7),9)    5 (6, [4, 5, 7], 9)

2.
def func(a,b=10,c-3,**kwargs):
    print(a,b,c,kwargs)
func(1)
func(1)  # 1 10 3 {}
func(2,b=10)   # 关键字赋值 2 10 3{}
#func(3,5,6,a=1,b=2)  #关键字

func(3,c=5,b=7,x=1,y=2)  #3 7 5 {'x': 1, 'y': 2}

3.def func(a,*args,**kwargs):
      print(a,args,kwargs)
t=(1,2,3,4)
func(1,t)
l=[2,5,8]
func(1,l,a=9,b=6)
'''

def func(a,*args):
   print(a,args)
func(2,[1,2,3,4])
func(5,6,[4,5,7],9)


def func(a,b=10,c=3,**kwargs):
    print(a,b,c,kwargs)
func(1)  # 1 10 3 {}
func(2,b=10)   # 关键字赋值 2 10 3{}
#func(3,5,6,a=1,b=2)  #关键字

func(3,c=5,b=7,x=1,y=2)  #3 7 5 {'x': 1, 'y': 2}


def func(a, *args, **kwargs):
    print(a, args, kwargs)
t=(1,2,3,4)
func(1,t)  #1 ((1, 2, 3, 4),) {}
l=[2,5,8]
func(1,l,c=9,b=6) #1 ([2, 5, 8],) {'c': 9, 'b': 6}

dict1={'1':'a','2':'b','3':'c'}
func(1,*l,**dict1)
#func(1,2,5,8,5,1='a',2='b',3='c')

'''
course = ['html','mysql','python']

'''
def func1(name,*args):
    if len(args)>0:
        for i in args:
            print('{}学过了{}'.format(name,i))
    else:
        print('没有学过任何编程知识:')

course = ['html','mysql','python']

#调用

func1('坤坤',course)
func1('坤坤',*course) #拆包  列表一个* ,字典**

'''
无参数函数:
def func():
    pass
func() --->调用
有参数的函数:
 1 普通参数
 def func(name,age)
    pass
func('aa',19)  ---->形参与实参个数要一致
 2.可变参数
 A:def func(*args):
   pass
 func()  ----> 函数调用时,实参的个数可以没有,也可以多个  *不能是关键字参数
 func(4)  func(5,'h')
 
 B: def func(**kwargs):
        pass
 func(a=1,b=2)---->函数调用时,实参的个数可以没有,也可以多个  *只能是关键字参数

 C: def func(*args,**kwargs):
        pass
 list1=[1,3]
 dict1=['1':'a','2':'b'}
 func(*list1,**dict1) #func(1,3,'1'='a','2'='b')
 D.混用
 def func(name,*args,**kwargs):
    pass
func('tom') ------->必须赋值

3.默认值+关键字
def func(name,age=18):
    pass
func('tom') ----> tom 18  
func('tom',age=20)  关键字赋值
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值