python函数

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)

输出

{'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

你可能感兴趣的:(python函数)