巨蟒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)
巨蟒python全栈开发-第6天 is&==的更多相关文章
- 巨蟒python全栈开发linux之centos1
1.linux服务器介绍 2.linux介绍 3.linux命令学习 linux默认有一个超级用户root,就是linux的皇帝 注意:我的用户名是s18,密码是centos 我们输入密码,点击解锁( ...
- 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理
一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...
- 巨蟒python全栈开发linux之centos6
1.nginx复习 .nginx是什么 nginx是支持反向代理,负载均衡,且可以实现web服务器的软件 在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器 我们下载 ...
- 巨蟒python全栈开发linux之centos3
1.作业讲解 (1)递归创建文件夹/tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng} 下面中的路径没有必要换,在哪里创建都行,根目录下或者tmp目录下或者其 ...
- 巨蟒python全栈开发django5:组件&&CBV&FBV&&装饰器&&ORM增删改查
内容回顾: 补充反向解析 Html:{% url ‘别名’ 参数 %} Views:reverse(‘别名’,args=(参数,)) 模板渲染 变量 {{ 变量名 }} 逻辑相关 {% %} 过滤器: ...
- 巨蟒python全栈开发-第11阶段 ansible_project2
一个NB的网站: https://www.toolfk.com/ CDN:将用户的需求送到最近的节点:内容分发网络 有些是专门做CDN的工具 常用的markdown是需要知道的,短信有字数限制. we ...
- 巨蟒python全栈开发-第4天 列表&元组&range
今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...
- 巨蟒python全栈开发-第13天 内置函数 匿名函数lambda
一.今日内容总览 1.内置函数(1):并不是每一个内置函数都是那么常用 上菜:内置函数部分//思维导图:https://www.processon.com/view/link/5b4ee15be4b0 ...
- 巨蟒python全栈开发-第14天 内置函数2 递归 二分查找
一.今日内容总览 1.内置函数补充 repr() 显示出字符串的官方表示形式 chr() arscii码中的字,转换成位置 ord() arscii码中的位置,转换成字2.递归 自己调用自己 两个口: ...
- 巨蟒python全栈开发-第15天 装饰器
一.今日内容总览 关于函数的装饰器1.装饰器(重点,难点)(要求:反复写,代码不多但是很绕) 开闭原则:(比如,菜单是拆散的,一点点搞的,用友拆散自己的功能,以后就不用开发了) (1)对功能的扩展开放 ...
随机推荐
- FIFO、LRU、OPT页面调度算法及样例
网上非常多介绍3种页面置换算法的样例和过程是不对的, 本文依据<操作系统概念>第七版对三种算法做介绍,并给出正确的样例以验证算法. 一.FIFO先进先出页面置换算法,创建一个FIFO队列来 ...
- java中finalkeyword使用说明
必须在域的定义处或者每一个构造器中用表达式对final进行赋值,这正是final域在使用前总是被初始化的原因所在.
- python-简单函数小例子 单位转换
第一种方法def fahrenheit_converter(g): fahrenheit = g /1000 return str(fahrenheit) + 'kg' #调用函数g2kg = fah ...
- linux文本分析利器awk
转 快速理解linux文本分析利器awk 原文链接 杜亦舒 性能与架构 awk是什么 如果工作中需要操作linux比较多,那么awk是非常值得学习的 awk是一个极其强大的文本分析工具,把文件逐行的读 ...
- sql自动增长标识(转载)
sql自动增长标识 对于一个设了自动增长标识的数据表来说,它的字段的值是由数据库自动设置的:这在导数据时很麻烦. 当我们导数据时,我们往往想想将标识字段的数据也导进来,怎么办呢? 方法有两 ...
- cocos2dx 3.x Node::schedule
auto callback = [=](float dt){ //do something }; node->schedule(callback, 1.0/60, "mySchedul ...
- unity5, UGUI刺穿问题解法
我希望在touch屏幕时player起跳,于是在playerControl.cs的Update函数中添加如下touch代码: if (Input.GetMouseButtonDown (0)) {/ ...
- 小马哥课堂-统计学-t分布(2)
t分布,随着自由度的增加,而逐渐接近于正态分布 #!/usr/bin/env python3 #-*- coding:utf-8 -*- ############################### ...
- request.setCharacterEncoding()对通过method="GET"输入的参数无效
通过GET提交参数有2种 1.浏览器地址栏输入URL?parameter1=value1¶meter2=value2 2.<form method="get" ...
- 语言中.C文件和.H文件的概念和联系
//a.h void foo(); //a.c #include "a.h" //我的问题出来了:这句话是要,还是不要? void foo() { return; } //main ...