python传参数
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传参数的更多相关文章
- shell 向python传参数,空格引发的问题
昨天用一个shell脚本,调用一个python脚本,并把shell脚本中用 time1=`date "+%Y-%m-%d %H:%M:%S"`生成的时间戳作为参数,传到python ...
- Python传参数最简单易懂的描述
关于,python的传参,很多人会搞得一头雾水,我也跟朋友讨论多次,最终通过实验,得到结论. 一.所有传递都是引用传递 二.在函数内使用[变量名]=,相当于定义啦一个局部变量 OK,一段简单的 ...
- shell向python传参数
想要在shell中调用python脚本时实现: python pyServer.py argu1 argu2 argu3 利用 sys.argv 即可读取到 相应参数: # coding=utf-8 ...
- python传参数是传值还是传址?
传址 不可变类型(数值型.字符串.元组): 因变量不能修改,所以运算不会影响到变量自身 可变类型(列表字典):函数体运算可能会更改传入的参数变量.
- Python中参数是传值,还是传引用?
在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码. 代码段1: def foo(arg): arg = 2 print(a ...
- Python之给程序传参数
1.代码 import sys # 导入系统 args = sys.argv # 获取系统参数 if(args.__len__() == 2): print("%s是世界上最好的语言!&qu ...
- 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参 ...
- python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参
1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...
- Java可变参数 & Python可变参数 & Scala可变参数
Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...
随机推荐
- Jenkins系列之Jenkins配置常用工具和如何下载插件
上一篇我们介绍了Jenkins的安装,这一篇我们介绍如何配置Jenkins的工具和如何下载插件. 首先我们先来看如何配置工具,这里的工具是指JDK.Ant.Maven.Git等. 1.点击系统管理,如 ...
- ORA-10997:another startup/shutdown operation of this instance in progress解决方法
SQL> startup ORA-10997: another startup/shutdown operation of this instance inprogress ORA-09967: ...
- vuex、redux、mobx 对比
出处:https://www.w3cplus.com/javascript/talk-about-front-end-state-management.html 其实大部分概念都差不多,只不过VUEX ...
- es 中的 Iterator
for...in 遍历(当前对象及其原型上的)每一个属性名称,而 for...of 遍历(当前对象上的)每一个属性值 ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iter ...
- MapReduce – 基本思路之推荐引擎
理解MapReduce关键两个步骤: 首先是构想出结构的数据结构,这种数据结构可以支撑你的业务分析使用:是要理解这种模式的处理元素. 第二步,分析原始数据的结构是怎样的: 第三步,基于原始数据结构以及 ...
- 【shell】grep命令
1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局 ...
- C/C++基础----IO库
IO对象无拷贝或赋值,通常以引用形式传递. IO库条件状态 strm::iostate 一种机器相关的类型,提供了表达条件状态的完整功能 strm::badbit 用来指出流已经崩溃 strm::fa ...
- 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver
场景 当我们设计程序界面的时候,中国人希望界面是中文,而美国人希望界面是英文. 我们当然希望后台代码不需改变,系统能够通过配置文件配置,来自己觉得是显示中文界面还是英文界面. 这是,Spring mv ...
- vs2017 编译JRTPLIB
一. JRTPLIB简介 RTP 是目前解决流媒体实时传输问题的最好办法,而JRTPLIB是一个用C++语言实现的RTP库,它完全遵循RFC 1889设计,目前已经可以运行在Windows.Linux ...
- 如何使用HttpClient认证机制
1.服务器认证(Server Authentication)HttpClient处理服务器认证几乎是透明的,仅需要开发人员提供登录信息(login credentials).登录信息保存在HttpSt ...