python巨蟒_巨蟒python全栈开发-第6天 is&==

1.小数据池

2.id

3.decode和encode

小数据池

#小数据池:不要死磕就行

#python为了简化,搞出来的一个东西

ID

(1)

# id()函数可以帮我们查看一个变量的内存地址

# a=10

# b=30

# c=10

# print(id(a)) #1712876864

# print(id(b)) #1712877504

# print(id(c)) #1712876864

(2)

# lst=['周杰伦','麻花藤']

# print(id(lst)) #1248606696968

# lst.append('胡辣汤')

# print(id(lst)) #1248606696968

#你哥还是你哥,你的包还是你的包

#在这个过程中,始终还是那个那个包

(3)

# lst=['周杰伦','麻花藤']

# print(id(lst)) #2415882876424

# lst=[] #重新定义一个列表

# lst.append('胡辣汤')

# print(id(lst)) #2415882876296

#

(4)#两个对象的内存地址是不一样的

'''

lst1=[1,2,3]

lst2=[1,2,3]

print(id(lst1)) #1845106652680

print(id(lst2)) #1845106652552

'''

(5)#python&java等等最慢的事情是:创建对象 作用:显著提高程序的运行效率

#随着时间的提升,内存会不断被消耗

'''

s1='abc' #内存中是没有'abc,创建一个新的 0.001

s2='abc' #内存中已经有了'abc',直接把abc拿来用 0.00000001

print(id(s1),id(s2)) #1351674474712 1351674474712

'''

#程序中出现最高的数据类型:字符串,为了能够快速的创建字符串

#节省内存,把相同的规律的字符串进行缓存,当下次创建的时候就不再创建了

#把字符串的缓存 ->小数据池->String iterning ->常量池->字符串缓存

#其他语言:常量池,字符串缓存

#在创建字符串之前,先去小数据池对比,是否已经存在了该字符串,如果存在了.

#就不创建新的了,直接拿原来存在的数据,省略掉反复重复创建字符串的过程,节省内存

(6)#小数据池只针对:数字,字符串,布尔值

# 什么数据会被缓存?

#数字,字符串,布尔值=》 都是不可变的数据类型(因为他会被很多人使用)

#有缓存和驻留机制

#基本数据类型:int bool str list tuple dic set

1.#数字

'''

a=1000

b=1000

print(id(a),id(b)) #2811993566928 2811993566928

'''

#在CMD显示不一样 -5-256

#在pycharm是显示一样的

2.#字符串,如果单纯的写字符串,几乎都会被缓存

'''

s1='alex昨天上厕所没关门,韩红冲进去了,风扇个出来了,alex昨天上厕所没关门,韩红冲进去了,风扇个出来了'

s2='alex昨天上厕所没关门,韩红冲进去了,风扇个出来了,alex昨天上厕所没关门,韩红冲进去了,风扇个出来了'

print(id(s1),id(s2)) #2793562660912 2793562660912

'''

'''

如果在py文件中写的字符串,几乎都是缓存的

在黑窗口里写的几乎都不会缓存

#不同的解释器,缓存的机制也不一样

# 优点:可以帮助我们快速的创建对象,节省内存

# 缺点:缓存如果过大,响应速度会比较慢

#但是我们 "不要纠结"

'''

# ==和 is

'''

硬盘: 80MB/S(数据库)

内存: 缓冲的作用 2G/S

CPU: 3Ghz (应用)

#内存很满很满时,会直接找硬盘,也就是硬盘中的内存机制

#百万并发:90万人在等待

#中间机制:中间加上缓存,现在的就是缓存

#短期内不改的,就放在小数据池内,京东的页面

#每天缓存一份,但是价格不缓存

'''

(7)#==(判断内容)和 is(判断内存地址) 的区别

#== 比较的是数据,外貌

#is 比较的是内存地址,比较身份证号

'''

lst1=[1,2,3]

lst2=[1,2,3]

#列表没有小数据池

print(id(lst1),id(lst2)) #2231123785096 2231123785224#并且每次的运行结果都不一样

print(lst1==lst2) #True

print(lst1 is lst2) #False

s1='我叫周润发'

s2='我叫周润发'

print(s1==s2) #True

#print(s1 is s2) #True #小数据池

tu1=('周一','周二')

tu2=('周一','周二')

print(tu1 is tu2) #False 内存地址不相同

print(tu1 == tu2) #True 内容一样

'''

3.decode和encode

(1)

'''

s='我今天非常的困'

bs=s.encode('utf-8') #把字符串转化成utf-8格式bytes

print(bs)

#bytes不是给人看的,给机器用的

#21个字节

# b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0'

bs=s.encode('gbk') #把字符串转化成utf-8格式bytes

print(bs)

#b'\xce\xd2\xbd\xf1\xcc\xec\xb7\xc7\xb3\xa3\xb5\xc4\xc0\xa7'

#utf-8和gbk是不能直接转换的,必须使用unicode来转换

'''

(2)

'''

bs=b'\xce\xd2\xbd\xf1\xcc\xec\xb7\xc7\xb3\xa3\xb5\xc4\xc0\xa7'

s=bs.decode('gbk')

print(s)

sb = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0'

s=sb.decode('utf-8')

print(s)

#爬虫中,在网站上,有的用的是GBK,有的就是utf-8

'''

#练习

'''

sb = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0'

gb=sb.decode('utf-8') #解码

gbk_1=gb.encode('gbk') #编码

print(gbk_1)

'''

# 关于bytes,非ascii中的内容,展示的是\x..,如果是ascii中的内容,原样输出

# name='alex昨天吃多了'

# bs=name.encode('gbk')

# print(bs)

name='alex昨天吃多了'

bs=name.encode('GBK')

print(bs)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值