def hello(name1='python',name2='java'):
print('name1 %s nmae2 %s'%(name1,name2))
hello('shit')
hello('1','2')
hello(name2='c',name1='c++')
多个参数传递的时候 可以按照顺序传递 但是这样没法第一个不赋值直接给第二个赋值
因此我们提出第二种方式传参 即直接将参数名写出来赋值传参 就像
hello(name2='c',name1='c++')
def fun(a,*p):#这种写法比较正常 带星号的可变长度参数会一把抓进来其后所有的传递参数
#因此 应该把单一不带星号的变写在星号参数之前 防止a无参可接受
#p将作为元组存储下来
print(type(p))
print(p)
print(a)
fun(1,2,3,4)
#输出
class 'tuple'
(2, 3, 4)
1
以上操作 如果是俩** 就是存储为字典
特别注意 你要是字典 赋值的时候必须是 (左值=右值)的形式
做出来的字典也就是{‘左值’:右值}这种形式
def fun(a,**p):
print(type(p))
print(p)
print(a)
fun(a=1,b=2,c=3,d=4)
输出<class 'dict'>
{'b': 2, 'c': 3, 'd': 4}
1
特别注意这时候**的参数必须在所有参数的最后
应用实例 把字典作为函数参数 传递的时候一堆参数全部写进字典 有重复的就覆盖掉
相当于参数初始值覆盖
def cube(name,**nature):
all_nature = {'x':1,
'y':1,
'z':1,
'color':'white',
'weight':1
}
all_nature.update(nature)
print(name,"立方体的属性")
print('体积:',all_nature['x']*all_nature['y']*all_nature['z'])
print('颜色:',all_nature['color'])
print('重量:',all_nature['weight'])
cube('first')
cube('second',y=3,color='red')
cube('third',z=2,color='green',weight=10)
输出
first 立方体的属性
体积: 1
颜色: white
重量: 1
second 立方体的属性
体积: 3
颜色: red
重量: 1
third 立方体的属性
体积: 2
颜色: green
重量: 10
下面拆解元组 列表 字典
def sum1(a,b):
return a+b
alist=[1,2]
print(sum1(*alist))#*将列表解成参数
print(sum1(*(4, 7)))#*将元组解成参数
print(sum1(**{'a':3,'b':9}))#把字典中 a对应的值传进去 b对应的值传进去
#输出
3
11
12