(一)Python入门-2编程基本概念:12同一运算符-整数缓存问题

一:同一运算符

  同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

运算符 描述
is  is是判断两个标识符是不是引用同一个对象
is not  is not 是判断两个标识符是不是引用不同对象

  is 与 == 区别:
    is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
    == 用于判断两个变量引用对象的值是否相等,默认调用对象的 __eq__()方法。

二:整数缓存问题

  Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行时,而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

总结:

  1、is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;

  2、== 比较的是两个对象的内容是否相等,值是否相等;

  3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;

  4、is 运算符比 == 效率高,在变量和None进行比较时,应该使用 is。

  【操作】同一运算符测试

 1 >>> a=1000
 2 >>> b=1000
 3 >>> a == b
 4 True
 5 >>> a is b
 6 False
 7 >>> id(a)
 8 1799963429808
 9 >>> id(b)
10 1799964263632
11 >>> c = 10
12 >>> d = 10
13 >>> c is d
14 True
15 >>> id(c)
16 140735929836656
17 >>> id(d)
18 140735929836656

原文地址:https://www.cnblogs.com/jack-zh/p/10810680.html

时间: 2024-10-10 08:33:51

(一)Python入门-2编程基本概念:12同一运算符-整数缓存问题的相关文章

(一)Python入门-2编程基本概念:10时间表示-unix时间点-毫秒和微妙-time模块

一:时间表示 计算机中时间的表示是从“1970 年 1月 1日 00:00:00”开始,以毫秒(1/1000 秒) 进行计算.我们也把1970 年这个时刻成为“unix 时间点”. 这样,我们就把时间全部用数字来表示了.时间本质上就是数字 python中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒 (1/1000 毫秒)精度的浮点值.例如:1530167364.8566. [操作] 1 >>> import time 2 >>> b =

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

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

(一)Python入门-2编程基本概念:13字符串-Unicode字符集-三种创建字符串的方式-len()

一:字符串基本特点 很多人初学编程时,总是担心自己数学不行,潜意识里认为数学好才能编程.实际上, 大多数程序员打交道最多的是“字符串”而不是“数字”.因为,编程是用来解决现实问题 的,因此逻辑思维的重要性远远超过数学能力. 字符串的本质是:字符序列.Python的字符串是不可变的,我们无法对原字符串做任何修改.但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果. Python不支持单字符类型,单字符也是作为一个字符串使用的.Python中字符串是基本数据类型. 二:字符串的编

(一)Python入门-2编程基本概念:07内置数据类型-基本算数运算符

一:Python内置数据类型 每个对象都有类型,python中最基本的内置数据类型: 1. 整型:整数,2345,10,50 2. 浮点型:小数,3.14 或者科学计数法 314e-2 3. 布尔型:表示真假,仅包含:True.False 4. 字符串型:由字符组成的序列. “abc”,”speed”,“我爱你” 二:数字和基本运算符 Python 支持整数(如:50,520)和浮点数(如:3.14,10.0, 1.23e2),我们可以对数字做如下 运算. 运算符 说明 示例 结果 + 加法 3

(一)Python入门-2编程基本概念:08整数-不同进制-其他类型转换成整数

一:整数-不同进制 Python中,除10 进制,还有其他三种进制: ·0b或0B,二进制 0 1 ·0o 或0O,八进制 0 1 2 3 4 5 6 7 ·0x或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f 这三种进制可以非常方便的进行“位运算”操作.位运算知识后面介绍. [操作]测试不同进制 1 >>> 12 2 12 3 >>> 0b101 4 5 5 >>> 0o19 6 SyntaxError: inval

(一)Python入门-2编程基本概念:16字符串-切片slice操作-逆序

一:字符串切片slice操作 切片 slice 操作可以让我们快速的提取子字符串.标准格式为: [起始偏移量start:终止偏移量end:步长 step] 典型操作(三个量为正数的情况)如下: 操作和说明 示例 结果 [:] 提取整个字符串 “abcdef”[:] “abcdef” [start:]从start 索引开始到结尾 “abcdef”[2:] “cdef” [:end]从头开始直到end-1 “abcdef”[:2] “ab” [start:end]从start 到 end-1  “a

(一)Python入门-2编程基本概念:17字符串-split()分割-join()合并-join()效率测试

一:split()分割 split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中).如果不指定分隔 符,则默认使用空白字符(换行符/空格/制表符).示例代码如下: 1 >>> a = "to be not to be" 2 3 >>> a.split() 4 5 ['to', 'be', 'not', 'to', 'be'] 6 >>> a.split("be") 7 8 ['to ', ' no

(一)Python入门-2编程基本概念:14字符串-转义字符-字符串拼接-字符串复制-input()获得键盘输入

一:转义字符 我们可以使用“\+特殊字符”,实现某些难以用字符表示的效果.比如:换行等.常见的 转义字符有这些: 转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \" 双引号 \b 退格(Backspace) \n 换行 \t 横向制表符 \r 回车 [操作]测试转义字符的使用 1 >>> a = 'i\nlove\nu' 2 >>> a 3 'i\nlove\nu' 4 >>> print(a) 5 i 6 love

(一)Python入门-2编程基本概念:01程序的构成

一:Python程序的构成 Python程序由模块组成.一个模块对应 一个python源文件,一般后缀名是:.py. 模块由语句组成.运行 Python 程序时,按照模块中语句的顺序依次执行. 语句是Python程序的构造单元,用于创建对象.变量赋值.调用函数.控制语句等. 二:Python文件的创建和执行 之前使用的交互式环境,每次只能执行一条语句:为了编写多条语句实现复杂的逻辑, 可以通过创建 Python 文件,并执行该文件. 在 IDLE 环境中,可以通过 File-->new 创建 P