python基础之小数据池,is和==区别 编码问题
主要内容 小数据池,is和==区别 编码问题 小数据池 一种缓存机制,也称为驻留机制,是为了能更快提高一些字符串和整数的处理速度
is 和 == 的区别
== 主要指对变量值是否相等的判断,只要数值相同一定为真
is 主要是对变量内存地址是否相同的判断,变量值相同不一定为真,但是变量内存地址相同,则变量一定相同。 tips:可通过id()来查询变量id why: 1.为什么会存在不同变量共用一个内存地址的情况?
1.前面说到的小数据池,即缓存。一部分字符串会被放在缓存中被公用,以提高处理速度 why: 2.为什么command命令窗口中和在Pycharm中同样输入给a,b赋值,得到的结果不一样?
1.python程序是由代码块构成的. 一个代码块的文本作为python程序执行的单元.一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. ⼀个文件也是一个代码块
2.在command命令窗口,a,b赋值是两个命令,而在Pycharm中认为是执行了一个文件(文件执行时(同⼀个代码块) 会把a, b两个变量量指向同⼀一个对象.)。所以结果会不一样 编码回顾:
1. ASCII : 最早的编码. ⾥面有英文大写字母, 小写字母, 数字, ⼀一些特殊字符. 没有中⽂文,8个01代码, 8个bit, 1个byte
2. GBK: 中⽂文国标码, ⾥面包含了了ASCII编码和中文常⽤用编码. 16个bit, 2个byte
3. UNICODE: 万国码, ⾥面包含了了全世界所有国家文字的编码. 32个bit, 4个byte, 包含了了ASCII
4. UTF-8: 可变⻓长度的万国码. 是unicode的⼀一种实现. 最⼩小字符占8位
1.英文: 8bit 1byte
2.欧洲文字:16bit 2byte
3.中文:24bit 3byte 解码和编码 不同编码之间存在转换的问题 tips:python2程序编码是ASCII 而python3位unicode
编码
a = "呵呵哈哈"
s = a.encode("utf-8")
# s = a.encode("gbk")
print(s)
解码
a = b'\xba\xc7\xba\xc7\xb9\xfe\xb9\xfe' #gbk
a1 = b'\xe5\x91\xb5\xe5\x91\xb5\xe5\x93\x88\xe5\x93\x88' #utf-8
s = a.decode("gbk")
s1 = a1.decode("utf-8")
print(s,s1) why:如何将GBK 转换为 utf-8? #先转成Unicode再转换为utf-8
a = b'\xba\xc7\xba\xc7\xb9\xfe\xb9\xfe' #gbk
s = a.decode("gbk") #转成unicode
b = s.encode("utf-8") #转成utf-8
print(b) #得到 utf-8 b'\xe5\x91\xb5\xe5\x91\xb5\xe5\x93\x88\xe5\x93\x88'
python基础之小数据池,is和==区别 编码问题的更多相关文章
- Python基础篇 -- 小数据池和再谈编码
小数据池 1. id() 通过id()可以查看到一个变量表示的值在内存中的地址 s = "Agoni" print(id(s)) # 2410961093272 2. is 和 = ...
- python基础之小数据池、代码块、编码和字节之间换算
一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...
- python基础之小数据池、代码块、编码
一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...
- python基础之小数据池
一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址: name = '太白' print(id(name)) # 158583128 ...
- python 浅谈小数据池和编码
⼀. ⼩数据池 在说⼩数据池之前. 我们先看⼀个概念. 什么是代码块: 根据提示我们从官⽅⽂档找到了这样的说法: A Python program is constructed from code b ...
- python中的 小数据池 is 和 ==
1. 小数据池 一种数据缓存机制,也被称为驻留机制 小数据池针对的是:整数 , 字符 , 布尔值 .其他的数据类型不存在驻留机制 在python中对 -5 到256之间的整数会被驻留在内存中, 将一定 ...
- 百万年薪python之路 -- 小数据池和代码块练习
1.请用代码验证 "alex" 是否在字典的值中? info = {'name':'王刚蛋','hobby':'铁锤','age':'18',...100个键值对} info = ...
- 百万年薪python之路 -- 小数据池和代码块
1.小数据池和代码块 # 小数据池 -- 缓存机制(驻留机制) # == 判断两边内容是否相等 # a = 10 # b = 10 # print(a == b) # is 是 # a = 10 # ...
- python 运算符和小数据池
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算,今天我们暂只学习算数运算.比较运算.逻辑运算.赋值运算 算数运 ...
随机推荐
- 解决/var/log下没有messages文件的问题?
fedora23和centos7+ 都是使用的 systemd 来代替sysv 管理系统启动和服务了. 在systemd 中主要包含两个方面的内容, 当打开/etc/inittab 文件时, 会看到: ...
- c 语言中宏定义和定义全局变量的区别
宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有 ...
- P4306 [JSOI2010]连通数
思路 要求求每个点能到达的点数就是传递闭包 然后n^3Floyd可做,但是n=2000,然后bitset压位 复杂度\(O(\frac{n^3}{32})\),能过 代码 #include <c ...
- Java 大数任意进制转换
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = ...
- Js批量下载花瓣网及堆糖网专辑图片
插件作者:SaintIC 文章地址:https://blog.saintic.com/blog/256.html 一.安装 1. 安装Tampermonkey扩展,不同浏览器的支持,参见官网:http ...
- twitter ads_campaign management
下载链接
- 使用v-for循环写入html内容,每一项的数据的写入
项目使用vue.js,在写某个dialog页面时,需要循环后台的数据(班级,班级学生名单,已选学生名单,发布时间,截止时间,答案显示等). 遇到的问题:循环绑定的值是相同的,而且改动一个值,其他ite ...
- 一些常见的第三方UI库
第三方UI库 1 bootstrap Bootstrap是Twitter推出的一个用于前端开发的开源工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个C ...
- “AI”项目日记
前言:为了更好的以“实践”巩固“学习”,利用空余时间,打造一个属于自己的项目 项目目标: 1.将学习的知识用项目实践,在实践过程中去领悟新的知识 2.高度自由,根据不同时期的学习目标,融入项目中去用代 ...
- 常见的Java面试题及答案整理
1. 基础篇 1. 面向对象特征:封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在 Java 当中,有 3 种修饰符: p ...