你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对
象(如字典)。将列表传递给函数后,函数就能直接访问其内容
1.在函数中修改列表
将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永
久性的,这让你能够高效地处理大量的数据。
2.禁止函数修改列表
有时候,需要禁止函数修改列表。例如,假设像前一个示例那样,你有一个未打印的设计列
表,并编写了一个将这些设计移到打印好的模型列表中的函数。你可能会做出这样的决定:即便
打印所有设计后,也要保留原来的未打印的设计列表,以供备案。但由于你将所有的设计都移出
了unprinted_designs,这个列表变成了空的,原来的列表没有了。为解决这个问题,可向函数传
递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件。
注意:
虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否
则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从
而提高效率,在处理大型列表时尤其如此。
虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否
则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从
而提高效率,在处理大型列表时尤其如此。
虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否
则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从
而提高效率,在处理大型列表时尤其如此。
3.传递任意数量的实参
有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任
意数量的实参。
(1)结合使用位置实参和任意数量实参
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最
后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。
(2)使用任意数量的关键字实参
有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种
情况下,可将函数编写成能够接受任意数量的键—值对——调用语句提供了多少就接受多少。一
个这样的示例是创建用户简介:你知道你将收到有关用户的信息,但不确定会是什么样的信息。
在下面的示例中,函数build_profile()接受名和姓,同时还接受任意数量的关键字实参,
编写函数时,你可以以各种方式混合使用位置实参、关键字实参和任意数量的实参。知道这
些实参类型大有裨益,因为阅读别人编写的代码时经常会见到它们。要正确地使用这些类型的实
参并知道它们的使用时机,需要经过一定的练习。就目前而言,牢记使用最简单的方法来完成任
务就好了。你继续往下阅读,就会知道在各种情况下哪种方法的效率是最高的。