is和==的区别以及编码和解码
一.is和==的区别
python中对象包含的三个基本要素分别是:id(身份标识),type(数据类型),value(值)
is和==都是对对象进行比较判断的,但对对象比较判断的内容不同.
★==是python标准操作符中的比较操作符,用来判断两个对象的value是否相等.
如:
a=6/2
b=3
print(a==b) #True
★is也被叫做同一性运算符,这个运算符比较判断的是对象的身份标识(id)是否相同,
如:
x=[4,5,6]
y=[4,5,6]
print(x is y) #False 因为x和y的id不同
a=1 #a和b是int型
b=1
print(a is b) #True
print(id(a)) #
print(id(b)) # a='qwert' #a和b是字符串型
b='qwert'
print(a is b) #True
print(id(a)) #
print(id(b)) # a=(1,2,3,4) #a和b是元组类型
b=(1,2,3,4)
print(a is b) #False
print(id(a)) #
print(id(b)) # a=[1,2,3,4] #a和b是列表类型
b=[1,2,3,4]
print(a is b) #False
print(id(a)) #
print(id(b)) # a= {'a':1,'b':2} #a和b是字典类型
b={'a':1,'b':2}
print(a is b) #False
print(id(a)) #
print(id(b)) #
is只有int和str类型的情况下,a is b才是True,其他类型时,a是False.
同时在int和str类型的时候也有一些限制
int型小数据池的范围是:-5~256
字符串中如果有特殊字符,他们的内存地址就不一样
字符串中单个字符*20以内,他们的内存地址是一样的,*21以上,就不一样
二.编码和解码
字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode('码') 字节 ==> 明文 把括号中的原码转换成unicode中明文
encode('码') 明文 ==> 字节 把unicode中的明文转换成括号中的原码
a=("移花接木你肌瘤") #unicode下的明文
print(a.encode('gbk')) #把unicode下的明文转换成了gbk下的原码 b'\xd2\xc6\xbb\xa8\xbd\xd3\xc4\xbe\xc4\xe3\xbc\xa1\xc1\xf6'
a1=a.encode('gbk')
print(a1.decode('gbk')) #把gbk下的原码转换成了unicode下的明文 移花接木你肌瘤
a2=a1.decode('gbk')
print(a2.encode('utf-8')) #把unicode下的明文转换成了utf-8下的原码 b'\xe7\xa7\xbb\xe8\x8a\xb1\xe6\x8e\xa5\xe6\x9c\xa8\xe4\xbd\xa0\xe8\x82\x8c\xe7\x98\xa4'
a3=a2.encode('utf-8')
print(a3.decode('utf-8')) #把utf-8下的原码转换成了unicode下的明文 移花接木你肌瘤
is和==的区别以及编码和解码的更多相关文章
- python基础小知识,is和==的区别,编码和解码
1.is和==的区别 1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = ...
- python中is与==的区别,编码和解码
在介绍is与==的区别前,我们先来了解一些新的知识:内存地址.小数据池. 1.内存地址(is 比较的就是内存地址) 获取内存地址的方法:id() a = "str" 2.小数据池 ...
- is和==的区别以及编码、解码
一.is和==的区别 1,id( ) id( )是python的一个内置函数,通过id( )我们可以查看到一个变量表的值在内存中的地址: s1 = 2 print(id(s1)) # 15143680 ...
- ==和is的区别 以及编码和解码
is和==的区别 1. id() id是python的一个内置函数,通过id()可以查看变量表的值在内存中的地址. s1 = 2 print(id(s1)) # 1514368064 s2 = 2 p ...
- python全栈开发 随笔 'is' 和 == 的比较知识与区别 编码和解码的内容及转换
python 一. is 和 == 的区别; == 比较的是两边的值. a = 'alex' b = 'alex' print(a = b) #True a = 10 b = 10 print(a = ...
- is 与 == 的区别;小数据池; 编码与解码
1, is 与 == 的区别 == 比较的是两边的值 is 比较的是两边的地址 id () 2,小数据池(在终端中) 数字小数据池的范围 -5 ~ 256 字符串中如果有特殊字符他们的内存地址 ...
- Python is 和 == 的区别, 编码和解码
一.is 和 == 的区别 is : 进行比较,比较的是内存地址是否一致 ==:进行比较,比较的是值是否相等 1.小数据池: 数字小数据池范围 -5~256 字符串中如果有特殊字符则他们的内存地址不一 ...
- python is == 的区别, 编码与解码.深浅拷贝
一. is == 的区别 双等表示的是判断是否相等, 注意. 这个双等比较的是具体的值.而不是内存地址 is 比较的是地址 编码回顾 除了了ASCII码以外, 其他信息不能直接转换 编码和解码的时 ...
- python之is 和 == 的区别//编码和解码
一.is 和 == 的区别: 1 .id() 内存地址 2. == 比较 #比较两边的值 3. is 比较 #比较的是内存地址 数字,字符串,有小数据池 #数字小 ...
随机推荐
- 前端构建工具里babel-polyfill的使用问题
看了很多react工程的package.json文件,里面都没有使用babel-polyfill,那对ES6的新API是如何做到被IE9这样的浏览器识别的呢,难道在webpack打包的时候通过别的方式 ...
- tomcat添加跨域访问功能-Access-Control-Allow-Origin:*
目标:tomcat服务器提供的接口,不能在其他域中访问的时候,需要增 Access-Control-Allow-Origin:* 直接配置的方法很多,但是我一个没有成功过,所以只能自己写拦截器了. 1 ...
- OVS 派OFPT_PORT_STATUS 流程
依据openflow合约[OFP1.0-38],当从物理端口ovs datapath 添加,改动或者删除的时候.都会先运行详细动作.然后通过ofp_port_status异步消息告知Controlle ...
- 【 D3.js 入门系列 --- 0 】 简介及安装
家是我的个人博客: http://www.ourd3js.com/ ,csdn博客首页为:http://blog.csdn.net/lzhlzz/.转载请注明出处,谢谢. D3的全称是(Data-D ...
- Matlab Tricks(十五) —— 圆的正确画法
使用参数方程, phi = 0:0.01:2*pi; x = cos(phi); y = sin(phi); axis equal plot(x, y) 根据参数方程,显然,圆心在 (0, 0),半径 ...
- HDU 1010 Tempter of the Bone heuristic 修剪
的问题是,在测试修剪. 应该说是更先进的应用. 由于使用的heuristic(经验)修剪.总结这方面的经验法则,别easy.我说,这也是由于先进的在线报告中的应用程序没有分析太多太好的解决这个问题,计 ...
- HTML 基础知识(特殊字符的转义)
1. body.head(meta) <body></body>标签的常见属性: bgcolor:整个页面的背景: text:设置文本颜色 link:设置连接颜色(),vlin ...
- PHP设置时区,记录日志文件的方法
关键字:PHP 时区 时间 日志 <html> <body> <?php date_default_timezone_set('Asia/Hong_Kong'); //s ...
- 2 DDD理论学习2 领域
一个领域本质上可以理解为就是一个问题域,只要是同一个领域,那问题域就相同. 所以,只要我们确定了系统所属的领域,那这个系统的核心业务,即要解决的关键问题.问题的范围边界就基本确定了. 领域首先要拆分成 ...
- ajax 异步长连接遭遇堵塞,“排序执行请求”的问题解决
今天开发一个网页聊天程序,利用AJAX保持着一个长连接监听新的聊天信息,之后又调用了另外一个AJAX来发言,于是就发生了一个AJAX线程被阻塞的问题. 在未监听到新的聊天信息的之前,发言用的AJAX就 ...