python 的字符串驻留机制

我们都知道python中的引用计数机制,相同对象的引用其实都是指向内存中的同一个位置,这个也叫做“python的字符串驻留机制”。其他的就不多说了,自行研究。

重点!!!!!!

python的引用计数机制,并不是对所有的数字,字符串,他只对“  [0-9] [a-z] [A-Z]和"_"(下划线)  ”有效,当字符串中由其他字符比如“! @ # ¥ % -”时字符驻留机制是不起作用的。

看下图:

当字符串中没有特殊字符时(‘abc’),引用指向同一对象;

当字符串中有特殊字符时(‘-abc’),引用指向不同对象。

详细讲解见:http://www.linuxidc.com/Linux/2015-02/114111.htm

时间: 2024-10-09 07:25:54

python 的字符串驻留机制的相关文章

(一)Python入门-2编程基本概念:18字符串-驻留机制-内存分析-字符串同一判断-值相等判断

一:字符串驻留 仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中. Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_).字母 和数字)会启用字符串驻留机制驻留机制. 二:字符串比较和同一性 我们可以直接使用==,!=对字符串进行比较,是否含有相同的字符. 我们使用is / not is,判断两个对象是否为同一个对象.比较的是对象的地址,即 id(obj1)是 否和 id(obj2)相等. 三:成员操作符 in /not in 关键字,判断某个字符(

Python 中的驻留机制:小数据池和代码块

Python 中的驻留机制:小数据池和代码块 Python 中的驻留机制主要有两个:小数据池和代码块.驻留机制并不是学习 Python 过程中特别重要的概念,我们学习小数据池的目的主要有两个方面: 解决日后写代码过程中可能出现的疑惑.在后期开发中,能 明确 知道有些代码为什么不能正常使用 找工作面试时或多或少可能被问到,关键时刻起到装 X 的作用 先补充一个关键字 is.is(是) 和 ==(等于) 的作用十分相似,我们在这里将它们进行一个对比: == : 官方:判断等号两边的内容是否相同 白话

Python中的字符串驻留

C#中的字符串驻留 熟悉.NET的人都应该知道C#中的字符串驻留机制,.NET维护了一个驻留池,它会把在编译期间就相同的字符串只保留一份拷贝.如果仅在运行期间值才相同的字符串变量,.NET不会为这个2个相同的字符串变量指向同一份引用的.不过.NET提供了一个方法,让开发人员可以强制将两个相同的字符串指向同一个引用,使用String类中的Intern方法. string s1 = "!QAZ2wsx3$%5$$%fe _ ###[email protected]"; string s2 

Python_驻留机制

1 #coding=utf-8 2 #coding:utf-8 3 #- * -coding:utf-8 - * - 4 5 '''以上为注明字符串的编码格式''' 6 #驻留机制 7 '''Python支持短字符串驻留机制,对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本, 8 与其他类型数具有相同的特点.然而这一特点并不适用于长字符串,长字符串不遵守驻留机制''' 9 a='1234' 10 b='1234' 11 print(id(a)==id(b)) #短

Python的驻留机制(仅对数字,字母,下划线有效)

Python的驻留机制及为在同一运行空间内,当两变量的值相同,则地址也相同. 举例: a = 'abc' b = 'abc' print(id(a)) # 3206115244944 print(id(b)) # 3206115244944 以上示例为驻留机制有效的情况下的内存地址. 以下为加入非数字.字母.下划线内容的驻留机制验证,结果为无效 c = 'ab c' d = 'ab c' print(id(c)) # 3206116210144 print(id(d)) # 3206115244

pyhon学习第六天 代码块,小数据池(缓存机制,驻留机制),is == id =,字符编码

1.代码块 能够实现某项功能的:模块,函数,类,文件 ##在python的交互模式下,一行代码就是一个代码块分别储存在不同文件中 2. id is ==和= =是赋值 ==比较两边数据内容是否相等 is 比较内存地址是否一致(内存里的id都是唯一的) id() 查看数据的id地址 3.小数据池(缓存机制,驻留机制): 小数据池是python对内存做的一个优化 优化内容:python将-5到256的整数.以及一定规律的字符串提前在内存找那个创建了固定的储存空间 适用小数据池的数据类型:*****

[转载] python的内存管理机制

本文为转载,原作为http://www.cnblogs.com/CBDoctor/p/3781078.html,请大家支持原作者 先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计数 (3)内存池机制 一.垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值.对Python语言来讲,对象的类型和内存都是在运行时确定的.这也是为什么我们称Python语言为动态类型的原因(这里我们把动态类型可以简单的归结

python的内存管理机制

先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计数 (3)内存池机制 一.垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值.对Python语言来讲,对象的类型和内存都是在运行时确定的.这也是为什么我们称Python语言为动态类型的原因(这里我们把动态类型可以简单的归结为对变量内存地址的分配是在运行时自动判断变量类型并对变量进行赋值). 二.引用计数: Python采用了类似Windows内核对象

python中字符串拼接

python中字符串拼接的三种方式: 1.使用 '+': 这中方式会在内存中,没使用一次就开辟一个新的空间,不建议使用.当数据庞大时候效率很低.后期有垃圾回收机制来处理没有用的字符串 案例:name = 'jam' name1 = name + 'c'这样内存中会开辟一个空间存放 name2 = name1 + 'h''这样内存中会再开辟一个空间存放 2.字符串格式化的形式:%s,这中方式让内存最多就开辟两个空间来进行存放字符. 案例:name = 'jam' name2 = 'chen' se