1、默认参数:

代码如下:

def information_register(name,age,country,sex):
    print("----注册信息------")
    print("姓名:",name)
    print("age:",age)
    print("国籍:",country)
    print("课程:",course)
 
information_register("山炮",22,"CN","")
information_register("二狗",21,"CN","")
information_register("三傻",25,"CN","")

 

 

 以上country 这个参数 基本都 是"CN", 就像我们在网站上注册用户,像国籍这种信息,你不填写,默认就会是 中国, 这就是通过默认参数实现的,把country变成默认参数非常简单:

def information_register(name,age,sex,country="CN"):
    print("----注册信息------")
    print("姓名:",name)
    print("age:",age)
    print("国籍:",country)
    print("课程:",course)
 
information_register("山炮",22,"")
information_register("二狗",21,"")
information_register("三傻",25,"")

 

对,只需要把创建country这个形参的时候给它传一个实参就可以:country="CN"。这样就成了默认参数,这个参数在调用时不指定,那默认就是CN,指定了的话,就用你指定的值。另外要注意的一点就是 :我把country变成默认参数后,把他的位置放到了最后,这个是因为关键字参数不能放在位置参数前面,这一点我们上一节随笔有举例子验证。

2、非固定位置参数:*args

作用:接收N个位置参数,转换成元组的形式

def test(*args): #形参必须以*开头,args参数名随便定义,但是最好按规范来,定义成args
    print(args)
 
test(1,2,3,4,5) #输入多个位置参数
 
#输出
(1, 2, 3, 4, 5)  #多个参数转换成元组

 

(1)、 不传值,传入列表

 

def test(*args):
    print(args)
 
print("-------data1-----")
test() #如果什么都不传入的话,则输出空元组
print("-------data2-----")
test(*[1,2,3,4,5])  #如果在传入的列表的前面加*,输出的args = tuple([1,2,3,4,5])
print("-------data3-----")
test([1,2,3,4,5])  #如果再传入的列表前不加*,则列表被当做单个位置参数,所以输出的结果是元组中的一个元素
 
#输出
-------data1-----
()
-------data2-----
(1, 2, 3, 4, 5)
-------data3-----
([1, 2, 3, 4, 5],)

 

 (2)、位置参数和非固定位置参数*args

 

def test(x,*args):
    print(x)  #位置参数
    print(args)  #非固定参数
 
test(1,2,3,4,5,6)
 
#输出
1
(2, 3, 4, 5, 6) 

 

第一个实参是形参X 的值,后面的值就变成了非固定位置参数的*args的实参了

 

(3)、 关键字参数和非固定位置参数*args

def test(x,*args):
    print(x)
    print(args)
 
test(x=1,2,3,4,5,6)
 
#输出
  File "D:/PycharmProjects/pyhomework/day3/非固定参数/非关键字参数.py", line 21
    test(x=1,2,3,4,5,6)
            ^
SyntaxError: positional argument follows keyword argument #位置参数在关键字参数后面

 显然报错了,因为x=1是关键字参数,*args是位置参数,而关键字参数不能再位置参数前面的,所以报错,只要把关键字参数放在位置后面就可以了,代码如下:

def test(*args, x):
    print(x)
    print(args)

test(2,3,4,5,6, x=1)


#1
#(2, 3, 4, 5, 6)
View Code

相关文章: