# id()函数可以帮我们查看一个变量的内存地址
a = 10
b = 30
print(id(a))
print(id(b))
lst = ["周杰伦","麻花藤"]
print(id(lst))
lst = [] # 创建了一个新列表
lst.append("胡辣汤")
print(id(lst)) lst1 = [1,2,3] #两个对象 内存地址是不一样的
lst2 = [1,2,3]
print(id(lst1)) # 34153608
print(id(lst2)) # 38782856 s1 = "abc" # 内存中是没有"abc", 创建一个新的 0.001
s2 = "abc" # 内存中是已经有啦"abc", 直接把abc拿来用 0.0000001
print(id(s1),id(s2)) # 使用频率最高的数据类型: 字符串, 为了能够快速的创建字符串, 节省内存, 把相同的规律的字符串进行缓存
# 当下次创建的时候就不在创建了
# 把字符串的缓存-> 小数据池-> String iterning-> 常量池-> 字符串缓存 # 在创建字符串之前, 先去小数据池对比, 是否已经存在了该字符串, 如果存在了,
# 就不创建新的了, 直接拿原来存在的数据, 省略反复重复创建字符串的过程, 节约内存 # 什么数据会被缓存
# 数字, 字符串, 布尔值 => 都是不可变的数据类型
# 1. 数字
a = 1000
b = 1000
print(id(a), id(b)) # 2. 字符串, 如果单纯的写字符串, 几乎都会被缓存
s1 = "alex昨天上厕所没关门,韩红冲进去了, 面筋哥出来了, 有故事"
s2 = "alex昨天上厕所没关门,韩红冲进去了, 面筋哥出来了, 有故事"
print(id(s1),id(s2)) # 如果在py文件中写的字符串, 几乎都是缓存的
# 在黑窗口里的写的几乎都不会缓存
# 不同的解释器, 缓存的机制也不一样
#
# 优点: 可以帮我们快速的创建对象
# 缺点: 缓存如果过大, 响应速度回比较慢
# 不要纠结 # == 和 is 区别
# ==比较的是数据, 外贸
# is 比较的是内存地址,比较身份证号
lst1 = [1,2,3]
lst2 = [1,2,3]
# 列表没有小数据池
print(id(lst1),id(lst2))
print(lst1 == lst2) # True
print(lst1 is lst2) # False s1 = "我叫周润发"
s2 = "我叫周润发"
print(s1 == s2) # True
print(s1 is s2) # False tu1 = ("周一", "周二")
tu2 = ("周一", "周二")
print(s1 is s2) # False 地址不相等
print(s1 == s2) # True

  

Python id的更多相关文章

  1. Python id() 函数

    Python id() 函数  Python 内置函数 描述 id() 函数用于获取对象的内存地址. 语法 id 语法: id([object]) 参数说明: object -- 对象. 返回值 返回 ...

  2. 简明python教程 --C++程序员的视角(四):容器类型(字符串、元组、列表、字典)和参考

    数据结构简介 Python定义的类型(或对象)层次结构在概念上可以划分为四种类别:简单类型.容器类型.代码类型 和内部类型. 可以将 PyObject 类之下的所有 Python 类划分为 Pytho ...

  3. 《Python核心编程》 第七章 映射和集合类型 - 习题

    课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {' :' python' } dict2 = {' :"hello" } dict ...

  4. Python自动化运维之5、内置函数

    python3.x内置函数 官网详解 一些例子:后期慢慢接触到再补充 # help() 详细查看某个类有那些方法或者方法的具体使用 >>> help(str) >>> ...

  5. sublime text3开发python并设置快捷键

    Package Control 安装方法 1.通过快捷键 ctrl+` 或者 View > Show Console 打开控制台,然后粘贴相应的 Python 安装代码: 2.Sublime T ...

  6. python的组合数据类型及其内置方法说明

    python中,数据结构是通过某种方式(例如对元素进行编号),组织在一起数据结构的集合. python常用的组合数据类型有:序列类型,集合类型和映射类型 在序列类型中,又可以分为列表和元组,字符串也属 ...

  7. 探索 Python 学习

    Python 是一种敏捷的.动态类型化的.极富表现力的开源编程语言,可以被自由地安装到多种平台上(参阅 参考资料).Python 代码是被解释的.如果您对编辑.构建和执行循环较为熟悉,则 Python ...

  8. Python 浅拷贝copy()与深拷贝copy.deepcopy()

    首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要和 == ...

  9. python基础 - 变量与运算符

    变量与运算符 变量 定义一个变量 a = [1,2,3,4,5,6] print(a) # [1,2,3,4,5,6] 变量命名要求: 首字母不能是数字 只能包含字符数字下划线 不能是关键字 type ...

随机推荐

  1. Python实现自平衡二叉树AVL

    # -*- coding: utf-8 -*- from enum import Enum #参考http://blog.csdn.net/niteip/article/details/1184069 ...

  2. HDU 6143 Killer Names(容斥原理)

    http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意: 用m个字母去取名字,名字分为前后两部分,各由n个字符组成,前后两部分不能出现相同字符,问合法的组成 ...

  3. python后端工程师 数据爬虫

    大数据挖掘分析平台和产品的建设. 工作职责: 独立完成软件系统代码的设计与实现: 根据需求完成设计,代码编写,调试,测试和维护: 使用Python 语言对后台业务逻辑进行开发以及维护: 能根据实际需求 ...

  4. [转]VS“当前上下文中不存在名称“ViewBag”解决方法

    原文链接:<VS"当前上下文中不存在名称"ViewBag",当前上下文不存在名称"model""-已解决> 自己的项目出现了错误 ...

  5. shell case语句

    case 格式 case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac ...

  6. 使用 data.table 包操作数据

    在第一节中,我们回顾了许多用于操作数据框的内置函数.然后,了解了 sqldf 扩展包,它使得简单的数据查询和统计变得更简便.然而,两种方法都有各自的局限性.使用内置函数可能既繁琐又缓慢,而相对于各式各 ...

  7. STL__网上资料

    1. http://bbs.csdn.net/topics/370029802 #include <iostream> #include <limits> #include & ...

  8. angular5 路由传参的几种方式

    此处介绍三种方式 方式一: 问号后面带的参数, 例如:/product?id=1&name=iphone还可以是: [routerLink]="['/books']" [q ...

  9. Linux 虚拟内存和物理内存的理解

    关于Linux 虚拟内存和物理内存的理解. 首先,让我们看下虚拟内存: 第一层理解 1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构 2. 一个新进程建立的时候,将会建立起自 ...

  10. 1月21日 Reference Data Type 数据类型,算法基础说明,二分搜索算法。(课程内容)

    Reference Datat Types 引用参考数据类型 -> 组合数据类型 Array, Hash和程序员自定义的复合资料类型 组合数据的修改: 组合数据类型的变量,不是直接存值,而是存一 ...