提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文主要介绍函数中的参数
提示:以下是本篇文章正文内容,下面案例可供参考
一、可变类型和不可变类型的差别?
此时列表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) 关键字赋值
'''