Python引用传值总结

Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变。

这里需要注意的是如果传的参数类型是不可改变的,如String类型、元组类型,函数内如需改变参数的值,则相当于重新新建了一个对象。

# 添加了一个string类型的元素添加到末尾

def ChangeList(lis):
    lis.append(‘hello i am the addone‘)
    print lis
    return

lis = [1, 2, 3]
ChangeList(lis)
print lis

得到的结果是:

[1,2,3, ‘hello i am the addone‘]

[1,2, 3,‘hello i am the addone‘]

def ChangeString(string):
    string = ‘i changed as this‘
    print string
    return

string = ‘hello world‘
ChangeString(string)
print string

String是不可改变的类型,得到的结果是:

i changed as this

hello world

  

  

时间: 2024-12-14 15:04:50

Python引用传值总结的相关文章

PHP基础------引用传值

<?php ////引用传值 //$a = 3; //$b = $a; //$a = 4; // //echo $b;//考虑$b值是多少,$a和$b分别在不同的空间,改变$a的值不会影响$b $a = 4; $b = &$a; $a = 8; echo $b; //&$a相当于把$a的地址传递给$b,此时两个变量指向同一个空间,所以改变$a的变量地址$b会随之改变

Python引用复制,参数传递,弱引用与垃圾回收

引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产生了无限递归.上述示例表明Python中的变量名为引用类型,赋值只是使得左值指向与右值相同的内存对象. is运算符可以判断两个引用是否指向了同一个对象,而==运算符判断两个引用指向的值是否相等而不关心指向什么对象. 对引用不了解的朋友,可以把Python引用与C/C++中的void *类比,不过因为垃圾回收机

Android之线程安全的单例模式,Adapter注意事项之引用传值

线程安全的单例模式单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static FestivalLab getInstance() { if (mInstance == null) { mInstance = new FestivalLab(); } return mInstance; } 这样写不是线程安全的,因为如果两个线程都进入到这里,会实例化两次.那么如何优化呢? 线程安全

Python引用模块和查找模块路径

模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块.在"模块"之上有"包",主要是

PHP引用传值规范问题

在我上一篇:  shopnc 商城源码阅读笔记--开篇概述   中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档  的中文版的时候   http://php.net/manual/zh/language.references.pass.php 看到如下描述: 注意在函数调用时没有引用符号——只有函数定义中有.光是函数定义就足够使参数通过引用来正确传递了.在最近版本的 PHP 中如果把 & 用在foo(&$a); 中会得到一条警告说“Call-time pass

Python入门之Python引用模块和查找模块路径

#这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是

Python 引用

python引用python中的数值类型变量也是引用,例如: a = 100b=a那么a和b指向同一块内存但是当修改a或者b的值得时候,Python会新分配一块内存来存储新的值 python中不可变类型(不支持修改)是数值类型,字符串类型,元组类型,其中数值和字符串全部都是引用,修改本质上是再开辟一块空间存放新值python中可变类型是列表和字典,在字典中,只有不可变类型才能够做key(甚至元组也可以做key) 原文地址:https://www.cnblogs.com/zhanggaofeng/

从python中copy与deepcopy的区别看python引用

讨论copy与deepcopy的区别这个问题要先搞清楚python中的引用.python的内存管理. python中的一切事物皆为对象,并且规定参数的传递都是对象的引用.可能这样说听起来比较难懂,对比一下PHP中的赋值和引用就有大致的概念了.参考下面一段引用: 1. python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当

python 引用和对象理解

今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象分离 更为贴切) 从最开始的变量开始思考: 在python中,如果要使用一个变量,不需要提前进行声明,只需要在用的时候,给这个变量赋值即可 (这个和C语言等静态类型语言不同,和python为动态类型有关). 举第一个栗子: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利