姓名:刘浩然。 2020年大目标Python

day14 Python函数之可变长参数

 函数参数

1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

 

a传给了x。b传给了y。

3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)

#位置参数,必须一一对应,否则报错,缺一个或者多一个不行
def test1(x,y,z): print(x) print(y) print(z) test1(1,3,5) 结果: 1 3 5
#关键字参数,不需要一一对应,缺一个或者多一个不行 def test1(x,y,z): print(x) print(y) print(z) test1(y=1,z=3,x=5) 结果: 5 1 3

 位置参数和关键字混搭

#位置参数必须在关键字参数左边
def test1(x,y,z):
    print(x)
    print(y)
    print(z)

test1(1,3,z=5)
#z=5换成y=5会报错,因为按照顺序,5会覆盖3,但是z值没有
结果:
1
3
5

 4.默认参数

def handle(x,type="None"):
    print(x,type)

handle("hello")
handle("hi",type="how are you")
handle("ll","ii")

结果:
hello None
hi how are you
ll ii

 5.参数组

**跟字典有关系
*跟列表有关系
**,*args在最后放着表示可扩展性!!!!

*
def test(x,*args):
    print(x)
    print(x,args)
    print(args)
    print(args[0])
    print(*args[0])

test(1,["c","v","b"],5,6,7,8)

结果:
1
1 (['c', 'v', 'b'], 5, 6, 7, 8)
(['c', 'v', 'b'], 5, 6, 7, 8)
['c', 'v', 'b']
c v b


**
def test01(x,**kwargs):
    print(x)
    print(kwargs)

test01(1,name="charon",age=10)

结果:
1
{'name': 'charon', 'age': 10}


结合:*args千万不能在后面,否则报错,位置参数必须在关键字参数前面
def test01(x,*args,**kwargs):
    print(x)
    print(args,args[1])
    print(kwargs)

test01(1,"vv",2,"bb",name="charon",age=10)

结果:
1
('vv', 2, 'bb') 2
{'name': 'charon', 'age': 10}

 

posted @ 2019-02-13 18:47  pluto2charon  阅读(181)  评论(0编辑  收藏  举报