Python蓝桥等考十八级之四:可变参数与特殊参数

  参数前的*号

 

 

 

 

 

 

 

 

 

 

 

 

  可变参数的顺序

 

 

 

 

 

 

 

 

 

  特殊参数斜杠(/)和星号(*)

 

  如果参数只有*号,而无标识符,说明不接收任何实际参数,但它强制它后面的参数只能用关键字传递的作用不变。请看下面的程序和运行结果。

 

  从上面的程序中可以看到,*号前面的参数还是既可以按位传递也可以用关键字传递。请看下图代码和运算结果。

 

  函数p(x,y)x是横坐标,y是纵坐标。简简单单的一个函数,调用就有四种方法。关键字输入也有弊端——参数多的情况下核对前面几个必选参数有些困难,如果想参数只能按位传递应该怎么办?

  Python提供特殊参数斜杆(/),规定斜杆前的参数只能按位传递。在上例函数参数中最后加入(/)的程序和运行结果。

 

  如果两个特殊参数都有,那要符合什么要求呢?先看下面的程序和运行结果。

 

  函数的定义没通过语法检查,即函数定义有语法错误。说明“*”号不可以在“/”号之前。

 

  由上面的测试得到特殊参数的使用规则:斜杆(/)和星号(*)可以单独使用,如果两者同时使用,斜杆(/)必须在星号(*)之前,斜杆(/)之前的参数必须按位传递;星号(*)之后的参数必须按关键字传递;斜杆(/)和星号(*)之间如果有参数,可以按位传递也可以按关键字传递。

  星号(*)参数是否可以与带*参数同时使用呢?

 

  可见,星号(*)参数不可以与带*参数同时使用,也就是说带*参数同时具有星号(*)参数的作用。

 

  参数前的**

 

 

 

 

 

 

 

 

 

 

 

 

 

  由于按位传递务必要在按关键字传递之前,带**号参数收集所有它之前未匹配的关键字参数,那么**号的参数之后不能再有参数,即带**号的参数总是在最后。

 

 

  逆向参数收集

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  练习题

 

  第一题:

 

 

  第二题:

 

 

  第三题:

 

 

  第四题:

 

 

  第五题: