你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对
象(如字典)。将列表传递给函数后,函数就能直接访问其内容

1.在函数中修改列表

将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永
久性的,这让你能够高效地处理大量的数据。

2.禁止函数修改列表

有时候,需要禁止函数修改列表。例如,假设像前一个示例那样,你有一个未打印的设计列
表,并编写了一个将这些设计移到打印好的模型列表中的函数。你可能会做出这样的决定:即便
打印所有设计后,也要保留原来的未打印的设计列表,以供备案。但由于你将所有的设计都移出
了unprinted_designs,这个列表变成了空的,原来的列表没有了。为解决这个问题,可向函数传
递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件。

注意:

虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否
则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从
而提高效率,在处理大型列表时尤其如此。

虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否
则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从
而提高效率,在处理大型列表时尤其如此。

虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否
则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从
而提高效率,在处理大型列表时尤其如此。

3.传递任意数量的实参

有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任
意数量的实参。

(1)结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最
后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

(2)使用任意数量的关键字实参

有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种
情况下,可将函数编写成能够接受任意数量的键—值对——调用语句提供了多少就接受多少。一
个这样的示例是创建用户简介:你知道你将收到有关用户的信息,但不确定会是什么样的信息。
在下面的示例中,函数build_profile()接受名和姓,同时还接受任意数量的关键字实参,

编写函数时,你可以以各种方式混合使用位置实参、关键字实参和任意数量的实参。知道这
些实参类型大有裨益,因为阅读别人编写的代码时经常会见到它们。要正确地使用这些类型的实
参并知道它们的使用时机,需要经过一定的练习。就目前而言,牢记使用最简单的方法来完成任
务就好了。你继续往下阅读,就会知道在各种情况下哪种方法的效率是最高的。

python的传递实参的更多相关文章

  1. python 函数(实参与形参、传递参数)

    函数 什么是函数?函数是带名字的代码块,用于完成具体的工作.写出一个函数后,就可以一直调用. 定义函数,函数的基本组成: 1.1 向函数传递参数 向函数中传递任意参数,这样打印出的结果就可以根据自己的 ...

  2. 函数的学习1——定义函数&传递实参——参考Python编程从入门到实践

    定义函数 def greet_user(): print("Hello") greet_user() # PEP8 函数和类的定义后空两行 1. 向函数传递参数 def greet ...

  3. pythion的定义函数和传递实参

    1.定义函数 例子: def greet_user(): """显示简单的问候语""" print("Hello!")g ...

  4. python变量传递

    python变量传递 数值 代码 num_1 = 123 num_2 = num_1 # 改变num_2值前 print 'num_1 = {0}, num_2 = {1}'.format(num_1 ...

  5. shell调用python脚本,并且向python脚本传递参数

    1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main ...

  6. python脚本传递参数

    给python程序传递参数 运行python脚本时有时需要执行实传递参数 在linux下: [root@Test ~]# cat /opt/python.py #!/usr/local/bin/pyt ...

  7. python 脚本传递参数

    python查找指定字符 #!/usr/bin/env python import sys import re f = open("log.txt", "rb" ...

  8. python 函数传递参数的多种方法

    python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...

  9. java调用python程序以及向python程序传递参数

    在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...

随机推荐

  1. ajax的get,post ,封装

    let ajax = new Object(); ajax.get = function(url,fn){ //创建ajax对象 let xhr = new XMLHttpRequest(); //与 ...

  2. 将php命令加入cenos环境变量

    0.修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码 1.PATH=$PATH:/usr/local/webserver/php/bin:/usr/lo ...

  3. 【java】AtomicReference介绍

    本文转载自:http://www.cnblogs.com/skywang12345/p/3514623.html 概要 本章对AtomicReference引用类型的原子类进行介绍.内容包括: Ato ...

  4. [hadoop] map函数中使用FileSystem对象出现java.lang.NullPointerException的原因及解决办法

    问题描述: 在hadoop中处理多个文件,其中每个文件一个map. 我使用的方法为生成一个文件,文件中包含所有要压缩的文件在HDFS上的完整路径.每个map 任务获得一个路径名作为输入. 在eclip ...

  5. if __name__ == '__main__'是什么意思?如何理解?看到一个很有用的解答

    小明.py 朋友眼中你是小明(__name__ == '小明'), 你自己眼中你是你自己(__name__ == '__main__'), 你编程很好, 朋友调你去帮他写程序(import 小明, 这 ...

  6. liunx php 安装 redis 扩展

    切换到安装目录:  cd /usr/local/ 下载php redis扩展:wget http://pecl.php.net/get/redis-2.2.8.tgz 更改名称压缩包名称: mv re ...

  7. python之控制流习题+代码

    # !/usr/bin/python3 # -*- coding: utf-8 -*- # @Time :2018/11/26 15:32 # @Author :yosef # @Email :wur ...

  8. Myeclipse经常弹出Subversion Native Library Not Available

  9. 【DP】+【贪心】【前缀和】洛谷P2893 [USACO08FEB]修路Making the Grade 题解

        正常的没想到的DP和玄学贪心. 题目描述 A straight dirt road connects two fields on FJ's farm, but it changes eleva ...

  10. WPF 布局

    WPF布局原则 WPF窗口只能包含单个元素,为在WPF窗口中放置多个元素并创建更贴近使用的用户界面,需要在窗口上放置一个容器,然后在这个容器中添加其他元素 遵循以下几条重要原则 不应显式设定元素(如控 ...