python引用
python中的数值类型变量也是引用,
例如:
a = 100
b=a
那么a和b指向同一块内存
但是当修改a或者b的值得时候,Python会新分配一块内存来存储新的值

python中不可变类型(不支持修改)是数值类型,字符串类型,元组类型,其中数值和字符串全部都是引用,修改本质上是再开辟一块空间存放新值
python中可变类型是列表和字典,在字典中,只有不可变类型才能够做key(甚至元组也可以做key)

#-*- coding:utf-8 -*-

num = 100

def update(a):
a += 10
print(a) #打印110 update(num) print(num) #打印100 '''
结论:python中所有的变量都是引用类型
num和update(a),实参num和形参a都指向同一片内存地址
a += 10
这里对a做出修改的操作 因为a是数值类型,属于不可变类型,不能修改
所以,python会创建一个临时变量a,用来存储110 所以print(num) 打印的仍然是100

注意:当全局变量做实参时,如果全局变量属于不可变类型,那么函数中对全局变量的修改无效

#-*- coding:utf-8 -*-

#python中+=在可变类型运算中的特殊用法

list = [2]

def test1(num):
num += num
print(num) #打印[2,2] test1(list) print(list) #打印[2,2] #从结果而言,修改了可变类型的值 print("===================") list2 = [3] def test2(num):
num = num + num #num+num 的结果是[3,3] 这里表示将[3,3]这个列表赋值给num这个临时变量
print(num) #打印[3,3] test2(list2) print(list2) 打印[3] '''
在python中 +=运算符表示对当前变量进行操作
并不完全等同于 +

Python 引用的更多相关文章

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

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...

  2. python引用和对象详解

    python引用和对象详解 @[马克飞象] python中变量名和对象是分离的 例子 1: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利用赋值语句,引用a指向了对象1. ...

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

    #这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的, ...

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

    引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产 ...

  5. python引用C++ DLL文件若干解释及示例

    python引用C++ DLL文件若干解释及示例 首先说一下,python不支持C++的DLL,但是支持C的DLL:C++因为和C兼容可以编译为C的DLL,这是下面文章的背景与前提 首先我这儿的示例使 ...

  6. python 引用和对象理解

    今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...

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

    讨论copy与deepcopy的区别这个问题要先搞清楚python中的引用.python的内存管理. python中的一切事物皆为对象,并且规定参数的传递都是对象的引用.可能这样说听起来比较难懂,对比 ...

  8. python引用在函数传参时的体现以及可变与不可变对象的对比

    今天偶然看到 vamei 老师的博客 http://www.cnblogs.com/vamei/archive/2012/07/10/2582795.html 讲的是python动态类型以及引用的事儿 ...

  9. Python引用传值总结

    Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...

随机推荐

  1. vue2.x 路由懒加载 优化打包体积

    当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组 ...

  2. tmux使用及配置

    这篇博客跟以前的vim配置一样,都是为了以后本人自己方便备份的tmux配置文件 0.安装 centos默认自带的软件是screen,没有带tmux,所以需要源代码安装 get clone http:/ ...

  3. mongoose之findOneAndUpdate方法之代码示例

    categoryModel.findOneAndUpdate({name:{$in:req.body.categorys}},{$inc:{total:1}},function(err){ if (e ...

  4. hi模板文件报乱码问题

    1.h5模板在: Templates\common 2.出现乱码的都在Templates\common\tags  局部视图里. 3.页面顶部有引用(skin-Common_SubmmitCartPr ...

  5. Redis List数据类型

    一.概述:      在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在, ...

  6. 九个问题从入门到熟悉HTTPS

    九个问题从入门到熟悉HTTPS Q1: 什么是 HTTPS? LHQ: HTTPS 是安全的 HTTP HTTP 协议中的内容都是明文传输,HTTPS 的目的是将这些内容加密,确保信息传输安全.最后一 ...

  7. 【delphi】关键字详解

    absolute {它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同.} var Str: ]; StrLen: Byte absolute Str; {这个声明指定了变量StrLe ...

  8. Linux环境变量相关总结

    Linux下环境变量分为全局和局部变量两种. Linux 下通常提供三种工具可以可以查看环境变量:printenv.env.set.前两个可以查看全局环境变量,最后一个会打印包含全局和局部环境变量. ...

  9. c++ primer读书笔记之c++11(一)

    1 新的关键词nullptr c++11引入新的关键词nullptr,用于表示空指针,用于替换之前c提供的NULL(最初NULL是定义在stdlib中的宏定义,通常是0). 2 新的别名定义机制 al ...

  10. Python(四)之Python流程控制(if、while、for)

    Python流程控制 if测试: if 条件测试表达式: 组合条件测试: x and y:与运算 x or y:或运算 not x:非运算 while: break:跳出最内层的循环 continue ...