我之前写了一篇关于Python参数传递(http://www.cnblogs.com/lxw0109/p/python_parameter_passing.html)的博客,

写完之后,我发现我在使用list的时候(我想在函数中改变实参),感觉使用文章中提到的传参理解还是有点儿迷惑和混乱

所以在此关于list的参数传递,再做一下补充和说明,这些是我个人的理解,如果您感觉有任何疑问或者不同的观点,非常

感谢您与我讨论,谢谢。

#!/usr/bin/python
#coding:utf-8
#File: listParaPass.py
#Author: lxw
#Time: 2014-04-19
#Usage: Learn more about parameter passing in Python. # 所以得到的结论就是:想改变实参,则实参不能以分片的形式传递,且函数内部须以分片的形式操作 def change(x):
x[:] = ['o', 'k']
print('x is {0}'.format(x)) #1:
a = [10, 20, 30]
print('a is {0}'.format(a)) # a is [10, 20, 30]
change(a) # x is ['o', 'k']
print('a is {0}'.format(a)) # a is ['o', 'k'] #2:
a = [10, 20, 30]
print('a is {0}'.format(a)) # a is [10, 20, 30]
# 想改变实参,则不能传分片;使用分片传,不会影响到实参。
change(a[:]) # x is ['o', 'k']
print('a is {0}'.format(a)) # a is [10, 20, 30] print('')
print('') def change1(x):
# 与上面的例子对比得到如下结论:
# 想改变实参(前提实参传的不能是分片),则函数内须用分片;若函数内不使用分片,则不会影响到实参。
x = ['o', 'k']
print('x is {0}'.format(x)) #1:
a = [10, 20, 30]
print('a is {0}'.format(a)) # a is [10, 20, 30]
change1(a) # x is ['o', 'k']
print('a is {0}'.format(a)) # a is [10, 20, 30] #2:
a = [10, 20, 30]
print('a is {0}'.format(a)) # a is [10, 20, 30]
change1(a[:]) # x is ['o', 'k']
print('a is {0}'.format(a)) # a is [10, 20, 30] print('')
print('') def change2(x):
x[1:3] = ['o', 'k']
print('x is {0}'.format(x)) #1:
a = [10, 20, 30]
print('a is {0}'.format(a)) # a is [10, 20, 30]
change2(a) # x is [10, 'o', 'k']
print('a is {0}'.format(a)) # a is [10, 'o', 'k'] #2:
a = [10, 20, 30]
print('a is {0}'.format(a)) # a is [10, 20, 30]
change2(a[:]) # x is [10, 'o', 'k']
print('a is {0}'.format(a)) # a is [10, 20, 30]

 注:把索引(如:a[1])也归入分片操作。

More about Parameter Passing in Python(Mainly about list)的更多相关文章

  1. Python Parameter Passing Note

    我刚刚开始学习Python, Python中的参数传递总是让我很困惑.我写了4个简单的Demo,帮助我理解Python的参数传递,希望对大家都能有所帮助. 0: def change(x): x = ...

  2. Default Parameter Values in Python

    Python’s handling of default parameter values is one of a few things that tends to trip up most new ...

  3. Parameter Passing / Request Parameters in JSF 2.0 (转)

    This Blog is a compilation of various methods of passing Request Parameters in JSF (2.0 +) (1)  f:vi ...

  4. Go parameter passing

    package main import ( "fmt" ) func main() { fmt.Println("Hello, playground") var ...

  5. 8. Object References, Mutability, and Recycling

    1. Variables Are Not Boxes # Think variables as sticky notes a = [1, 2, 3] b = a a.append(4) print b ...

  6. [python] File path and system path

    1. get files in the current directory with the assum that the directory is like this: a .py |----dat ...

  7. Python面试常见的问题

    So if you are looking forward to a Python Interview, here are some most probable questions to be ask ...

  8. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  9. Python基础-函数(function)

    这里我们看看Python中函数定义的语法,函数的局部变量,函数的参数,Python中函数的形参可以有默认值,参数的传递是赋值操作,在函数调用时,可以对实参进行打包和解包  1,函数定义 关键字def引 ...

随机推荐

  1. Atitit.虚拟机与指令系统的设计

    Atitit.虚拟机与指令系统的设计 1. 两种计算模型  ,堆栈机和状态机(基于寄存器的虚拟机1 1.1.1. 堆栈机1 1.1.2. 状态机2 2. 为什么状态机比堆栈机快呢?3 2.1. Sta ...

  2. nginx源码学习_数据结构(ngx_pool_t)

    nginx中关于ngx_pool_t的数据结构位于src/core/ngx_palloc.c和src/core/ngx_palloc.h中,该数据结构主要是和内存池相关的,写下这篇博客前参考了网上很多 ...

  3. Java中有几种类型的流?以及常见的实现类都有哪些?

    Java中有几种类型的流?以及常见的实现类都有哪些? 首先应该从两个角度来看: 从输入输出方面来讲:       Java中有输入流和输出流 从流的编码方式上来讲:    Java中有字节流和字符流 ...

  4. CentOS 7 安装以及配置桌面环境

    一.安装 GNOME 桌面 1.安装命令: yum groupinstall  "GNOME Desktop" "X Window System" " ...

  5. SVN常见问题(转)

    svn常见问题,报错,命令及我的总结 (2013-07-19 18:07:27) 转载▼     我自己犯过的一个错误是:/svn/MyERP_core_Main/!svn/act/b8bd621b- ...

  6. 不再为无限级树结构烦恼,且看此篇s

    很久都没有写点什么出来分享了,最近在做多级树的时候,发现来来回回写过很多遍,于是封装成用户控件,以方便日后重复使用. 首先上效果: 我们看到以上2种效果,都是支持任意级的,这里源码中使用的是递归,以便 ...

  7. Datagrid方法扩展 - tooltip

    最新版本的jQuery Easyui新出来了一个组件叫tooltip,就是提示框.以前的版本没有这个组件的时候就有很多在问,datagrid的单元格,我要加鼠标提示要怎么做.原来我告诉他们的方法都是用 ...

  8. Redis 3 在CentOS 6.5上安装笔记,含启动脚本

    Redis的强大就不多说了,直接上菜. 第1步:下载.编译.安装 cd /opt wget http://download.redis.io/releases/redis-3.0.5.tar.gz . ...

  9. linux c 常常混淆的概念

    指针函数 and 函数指针 指针函数是指带指针的函数,即本质是一个函数.函数都有返回类型(假设不返回值,则为无值型),仅仅只是指针函数返回类型是某一类型的指针. 定义格式 类型名 *函数名(函数參数列 ...

  10. NGINX快速部署

    NGINX快速部署 #!/bin/bash ############################################################################## ...