Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

列表,字典等参数: 传引用,函数中对这些对象做修改,原来的值也会被修改。

int,string, tuple: 传引用,但是结果像传值,函数的修改不会反映到原变量。


#!/usr/bin/python
# -*- coding: utf-8 -*- a = {i: i*i for i in range(10)}
b = 10
c = "hello world!" def pop_list(x):
for i in range(len(x)):
x.pop(i)
print x def decrease(y):
y = y-2
print y def slice(string):
string = string[:2]
print string if __name__ == "__main__":
print "-" * 10 + "original a" + "-" * 10
print a
print "-"*10 + "params in function" + "-"*10
pop_list(a)
print "-" * 10 + "a" + "-" * 10
print a print "-" * 10 + "original b" + "-" * 10
print b
print "-" * 10 + "params in function" + "-" * 10
decrease(b)
print "-" * 10 + "b" + "-" * 10
print b print "-" * 10 + " original c" + "-" * 10
print c
print "-" * 10 + "params in function" + "-" * 10
slice(c)
print "-" * 10 + "c" + "-" * 10
print c

output:

----------original a----------

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

----------params in function----------

{}

----------a----------

{}

----------original b----------

10

----------params in function----------

8

----------b----------

10

---------- original c----------

hello world!

----------params in function----------

he

----------c----------

hello world!

 

ref: http://www.cnblogs.com/loleina/p/5276918.html

python传参数的更多相关文章

  1. shell 向python传参数,空格引发的问题

    昨天用一个shell脚本,调用一个python脚本,并把shell脚本中用 time1=`date "+%Y-%m-%d %H:%M:%S"`生成的时间戳作为参数,传到python ...

  2. Python传参数最简单易懂的描述

    关于,python的传参,很多人会搞得一头雾水,我也跟朋友讨论多次,最终通过实验,得到结论.   一.所有传递都是引用传递 二.在函数内使用[变量名]=,相当于定义啦一个局部变量   OK,一段简单的 ...

  3. shell向python传参数

    想要在shell中调用python脚本时实现: python pyServer.py argu1 argu2 argu3 利用 sys.argv 即可读取到 相应参数: # coding=utf-8 ...

  4. python传参数是传值还是传址?

    传址 不可变类型(数值型.字符串.元组): 因变量不能修改,所以运算不会影响到变量自身 可变类型(列表字典):函数体运算可能会更改传入的参数变量.

  5. Python中参数是传值,还是传引用?

    在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码. 代码段1: def foo(arg): arg = 2 print(a ...

  6. Python之给程序传参数

    1.代码 import sys # 导入系统 args = sys.argv # 获取系统参数 if(args.__len__() == 2): print("%s是世界上最好的语言!&qu ...

  7. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  8. python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参

    1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...

  9. Java可变参数 & Python可变参数 & Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

随机推荐

  1. CAM 查看里先选哪些层才能方便查看

    CAM 检查 Gerber 时选 Layer 时有先后次序,才以看清楚是否有冲突. 比如检查 TOP 层时顺序应该是 MT ST L1 BOT 层检查顺序 MB SB L2/L4

  2. hello word 应用程序的编写

    1.各类文件的书写 src中的文件: hello文件夹中的Makefile文件 # # Copyright (C) - OpenWrt.org # # This is free software, l ...

  3. 【python】globle的使用

    python中直接定义的变量就是本地变量,使用global定义的变量就是全局变量.比如: a = 1 b = 1 def foo1(): global b #申明使用全局b a = 2 #a是本地变量 ...

  4. 【数据库】使用JMeter创建数据库(Mysql)测试

    我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/detail/paulwin ...

  5. linux vim tutor

    ================================================================================      欢     迎     阅  ...

  6. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  7. Qt Creator 预览QtCreator中的界面

    当在QtCreator界面编辑器中放置好布局和控件之后,组合键 Alt + Shift + R 可以实现预览功能.                       也可以通过以下方式更改快捷键: 具体路径 ...

  8. 学习笔记之Redis

    Redis https://redis.io/ redis.cn http://www.redis.cn/ Azure Redis Cache Documentation - Tutorials, A ...

  9. [转] oracle 数据库 SQL plus 连接方法

    http://hi.baidu.com/zzy382/item/a5b197f97a38e01ba7298832 之前电脑上安装了一个 Oracle  有一段时间没用,就把密码给忘了,按上面链接里的操 ...

  10. gradle使用心得

    gradle是语言式构建,和maven配置型还是差别挺大,琢磨了2天 1.在解析setting.gradle之后,开始解析build.gradle之前,这里如果要干些事情(更改build.gradle ...