python之is 和 == 的区别//编码和解码

一.is  和  ==  的区别:

==   比较    #比较两边的值

is    比较   #比较的是内存地址

id()是python的一个内置函数,通过id()我们可以查到一个变量表的值在内存中的地址

(只限于数字和字符串是True)

#数字小数据池 :    -5~256

1.字符串中如果有特殊字符,那么不会添加到小数池中,他们的内存地址就不一样

字符串中单个*20以内他们的内存一样,超过20个就不会添加到小数据池;单个*以上内存地址就不一样

注意:pycharm是个坑,一个py文件中所有相同的字符串,一般都是使用一样的内存地址

在py文件中,如果你只是单纯的定义一个字符串,那么一般情况下都会被添到小数据池中,我们可以这样认为:在使用字符串的时候,python会帮我们把字符串进行缓存,在下次使用的时候直接指向这个字符串即可,可以节省很多内存。

s = 2
print(id(s)) # 1514368064
s = 2
print(id(s)) # 1514368064
s = ‘alex‘
print(id(s)) # 43156680
s = "alex"
print(id(s)) # 43156680
lst = [1, 2, 4]
print(id(lst)) # 43164168
lst1 = [1, 2, 4]
print(id(lst1)) # 41362568
tup = (1, 2)
tup1 = (1, 2)
print(id(tup)) #39978312
print(id(tup1)) #39978376

# 我们发现,数字和字符串的数据地址是一样的. 列表和元组的数据地址是不一样的

.

二.编码和解码

encoude(编码方式)    -----拿到明文编码后对应的字节t

decode(编码方式)      -----将编码后的字节解码成对应的明文

1.python2中使用的是ASCII码,所以不支持中文,如果需要在python中更改编码,需要在中文的开始编写:

  #-*- encoding:utf-8 -*-

编码回顾;

1.ASCII : 最早的编码,里面有英文大写字母,小写字母,数字,一些特殊字符,没有中文.

8 个bit(8位),1个 byte.

2.GBK : 中文国标码,里面包含了ASCII编码,1

    6个bit,2个byte

3.unicode : 万国码,里面包含了全世界所有国家的文字编码

    32个bit,4个byte,包含了ASCII

4.utf-8 : 可变长度的万国码,是Unicode的一种实现,最小字符占8位

         英文:8bit  1byte

    欧洲文字:16bit  2byte

    中文:24bit  3byte

综上,除了ASCII码以外,其他信息不能直接转换。

 在python3的内存中,在程序运行阶段使用的是unicode编码,因为unicode是万国码,什么内容都可以进行显示,那么在数据传输和存储的时候由于unicode比较浪费空间和资源,需要把unicode转存成UTF-8或者CBK进行存储,怎么转换呢,在python中可以把文字信息进行编码,编码之后的内容就可以进行传输了,编码之后的数据是bytes类型的数据,其实啊,还是原来的数据只是经过编码之后表现形式发生了改变而已。

bytes 的表现形式:

  1,英文 b‘alex‘,英文的表现形式和字符串没什么两样;

  2,中文b‘\xe4\xb8\xad‘,这是一个汉字的UTF-8的bytes表现形式;

    # 编码:
    s = "alex"
    print(s.encode("utf-8")) # 将字符串编码成UTF-8,结果为:b‘alex‘
    print(s.encode("GBK")) # 将字符串编码成GBK,结果为:b‘alex‘

    s = "中"
    print(s.encode("UTF-8"))
    print(s.encode("GBK"))
    s1 =  s.encode("UTF-8") # 中文编码成UTF-8,结果为:b‘\xe4\xb8\xad‘
    s2 = s.encode("GBK") # 中文编码成GBK,结果为:b‘\xd6\xd0‘

    # 解码:
    print(s1.decode("UTF-8"))  #结果为:中
    print(s2.decode("GBK"))   #结果为:中
复制代码

  注意:用什么进行编码就要什么进行解码。

  记住:英文编码之后的结果是原字符串一致,中文编码之后的结果根据编码的不同,编码结果也不同,我们能肯定,一个中文UTF-8是3个字节。一个GBK的中文编码是2个字节。

原文地址:https://www.cnblogs.com/wxj1129549016/p/9409725.html

时间: 2024-11-05 02:36:59

python之is 和 == 的区别//编码和解码的相关文章

python接口自动化测试十三:url编码与解码

# url编码与解码 from urllib import parse url = 'http://zzk.cnblogs.com/s/blogpost?Keywords=中文' a = '中文' b = parse.quote(a)  # 转urlencode编码 print(b) print(parse.quote(b))   # 转第二次(若有需求) # 解码 c = '%E4%B8%AD%E6%96%87' d = parse.unquote(c) print(d) # 解码 f = '

python3 unicod,utf-8,gbk的编码和解码中文显示问题

python3的字符编码让人头疼.这个也不是一篇介绍gbk, utf-8, unicode怎么表示英文,中文字符的基础知识总结.网上有很多类似的文章,目前也不需要升入学习到了解各个bit位表示什么含义. 目的:清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示. 前提:了解不同编码用不同的二级制编码和长度来表示字符.在python3中,各种字符编码之间的互相转换都要通过unicode作为中间编码转换.gbk转换成unicode,再从unic

Python 学习第四弹:编码问题(转载)

关于python的编码问题一直以来不得解,终于在今天从这篇博文中明白了. 原文地址: http://nedbatchelder.com/text/unipain.html 译文地址:http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue5/unipain.html 译者: yudun1989 实用Unicode编程指南 这是我在 Pycon2012 所做的演讲.你可以阅读本页的幻灯片和文字,或者直接在浏览器中打开 演示 ,或者

Python编程(三)字符编码与文件处理

计算机要想工作必须通电,也就是说'电'驱使计算机干活,而'电'的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而编程的结果说白了只是一堆字符,也就是说我们编程最终要实现的是:一堆字符驱动计算机干活 所以必须经过一个过程: 字符--------(翻译过程)------->数字 这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码 字符编码 :字符-->二进制数字的标准阶段一:ASCII:一个Bytes代表一

从Python的角度来看编码与解码

导语: Python2和Python3中,因为默认字符集的不同而造成的麻烦,简直是程序员的梦魇!要彻底告别这个麻烦,就需要从本质上来理解编码和解码. 为什么要有编码? 对于不会英文的中国人来说,将英文翻译成中文,这个就叫做解码:而将中文翻译成英文,自然就是编码了! 这个道理在计算机中同样适用. 计算机只能识别0和1,任何文字对于计算机来说,就是0和1的排列组合.但是我们人类哪看得懂这种0和1的排列组合! 自然就需要将0和1的文字转换为我们能看得懂的文字,比如中文,英文等. 而这种0和1到文字的映

Python中的字符串与字符编码

原文地址:点击这里 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

python中base64编码与解码

引言: 在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应报文进行解码: Base64编码是一种"防君子不防小人"的编码方式.广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有"=",生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合python2中进行Base64编码和解码&g

python中is和==的区别

Python中  is 和 == 的区别的笔记 在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is.==和is操作的区别是: is比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址. ==比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法. 清楚is和==的区别之后,对此也许你有可能会遇到下面的这些困惑,于是就有了这样一篇文章,试图把Python中一些隐晦的东西趴出来,希望对你有一定的