Python函数参数小讲

小编认为,python最有用的特性之一,就是其对函数参数灵活的处理方式。比如,利用*和**来传递可迭代的和mapping参数值,以及python 3中最新加入的强制关键字参数(keyword-only arguments),都是平时经常会遇到的用法。
让我们用一个例子来具体说明一下这些参数传递方法。下面这个函数是一个可以生成html页面的函数
tag函数可以用如下方式来调用:
我们来稍微解释一下。
这种用法是最简单的,直接传递了一个name参数。这里,第一个参数被传递给了name,后面所有的参数都会作为一个可迭代对象传给content。这里只有一个值,那就是‘hello’。在这种调用中,带有关键字的参数会作为字典被**attrs捕获。cls参数被作为一个关键字参数传递给函数。如果前面没有其他参数的话,函数的第一个参数也可以是关键字参数。字典my_tag前面加以**时,它其中的元素会作为独立参数传递给函数。参数名与字典关键字相同的会将值传给对应的参数,其余的值被**attrs接收。
强制关键字参数作为一个新的特性被加入到python 3中。在前面的例子中,cls作为强制关键字参数,被定义在*参数之后。如果你不想用到*参数,但是又想用强制关键字参数,那么可以仅仅保留*作为占位符,而不为其分配参数名:
值得注意的是,这个例子表明,强制关键字参数不一定要有默认值,就像这里的b一样。
好了,今天就先介绍到这里。大家觉得如何呢,欢迎留言讨论。