函数的参数

函数的参数有:

  1.形参和实参;

  2.位置参数和关键字参数;

  3.默认参数;

  4.非固定参数;

1.形参和实参;

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

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

2.位置参数和关键字参数;

1 def test(x,y):
2     print(x)
3     print(y)
4 
5 test(y=1,x=2)   #关键参数值指定与位置无关
6 print('下面是位置参数,与形参一一对应'.center(100,'-'))
7 test(1,2)   #位置参数与形参一一对应

返回:

 注意:关键参数是不能写在位置参数前面的。

  如:test(x=1,1) 会报错。

3.默认参数;

特点:调用函数的时候,默认参数非必须传递。

用途:

  安装软件时的一键安装(默认安装值);

  连接数据库的端口号,如“def conn(host,port=3302)”

1 def test(x,y=2):
2     print(x)
3     print(y)
4 
5 test(y=1,x=2)  #关键字参数
6 print('下面是位置参数,与形参一一对应'.center(100,'-'))
7 test(1,2)  #位置参数
8 print('下面是默认参数'.center(100,'-'))
9 test(1,)

返回:

  

4.非固定参数;*args,**kw

 *args 将多余的参数变为元组;

**kw 将多余的参数变为集合。

 1 def test(x,*args):  #使用*args,可以将传入的多余的实参转换为元组的形式存放起来。
 2     print(x)
 3     print(args)
 4 
 5 test(1,2,3,4)
 6 
 7 
 8 def test2(**kwargs):  #使用**kwargs,可以将关键字参数转换为字典的方式存放起来。
 9     print(kwargs)
10 
11 test2(name='alex',age=8)  #等价test2(**{'name':'alex','age';8})

 返回:

各种参数的注意项:

1.关键参数是不能写在位置参数前面的,也就是说位置参数一定要在关键参数的前面。

2.*args接受N个位置参数,转换为元组的形式。

3.**kwargs将关键字参数转换为字典的形式,所以调用函数时不能传入非关键字参数给**kwargs。

4.各种参数的顺序为:

位置参数-->默认参数/关键字参数-->*args-->**kwargs

如果*args之前已经传入了关键字参数,后面如果传入位置参数,是不能成功地传入*args中去的,而是报错。

原文地址:https://www.cnblogs.com/zoe233/p/7064830.html