文件名称:可变长度的参数-qt教学大纲
文件大小:5.26MB
文件格式:PDF
更新时间:2024-06-23 19:46:31
python 核心编程 中文版 高清文字版
11.6 可变长度的参数 可能会有需要用函数处理可变数量参数的情况。这时可使用可变长度的参数列表。变长的参数 在函数声明中不是显式命名的,因为参数的数目在运行时之前是未知的(甚至在运行的期间,每次 函数调用的参数的数目也可能是不同的),这和常规参数(位置和默认)明显不同,常规参数都是在 函数声明中命名的。由于函数调用提供了关键字以及非关键字两种参数类型,python 用两种方法来 支持变长参数, 在 11.2.4 小节中,我们了解了在函数调用中使用*和**符号来指定元组和字典的元素作为非关 键字以及关键字参数的方法。在这个部分中,我们将再次使用相同的符号,但是这次在函数的声明 中,表示在函数调用时接收这样的参数。这语法允许函数接收在函数声明中定义的形参之外的参数。 11.6.1.非关键字可变长参数(元组) 当函数被调用的时候,所有的形参(必须的和默认的)都将值赋给了在函数声明中相对应的局 部变量。剩下的非关键字参数按顺序插入到一个元组中便于访问。可能你对 C中的“varargs“很熟 悉(比如, va_list, va_arg,以及省略号[])。Python 提供了与之相等的支持---迭代过所有的 元组元素和在 C 中用 va_arg 是相同的。对于那些不熟悉 C 或者"varargs"的人,这仅仅代表了在函 数调用时,接受一个不定(非固定)数目的参数。 可变长的参数元组必须在位置和默认参数之后,带元组(或者非关键字可变长参数)的函数普 遍的语法如下: def function_name([formal_args,] *vargs_tuple): "function_documentation_string" function_body_suite 星号操作符之后的形参将作为元组传递给函数,元组保存了所有传递给函数的"额外"的参数(匹 配了所有位置和具名参数后剩余的)。如果没有给出额外的参数,元组为空。 正如我们先前看见的,只要在函数调用时给出不正确的函数参数数目,就会产生一个 TypeError 异常。通过末尾增加一个可变的参数列表变量,我们就能处理当超出数目的参数被传入函数的情形, 因为所有的额外(非关键字)参数会被添加到变量参数元组。(额外的关键字参数需要关键字变量参 数[参见下一小节].)正如预料的那样,由于和位置参数必须放在关键字参数之前一样的原因,所有