ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Knight_day6

2022-02-07 23:02:02  阅读:176  来源: 互联网

标签:alex day6 Knight s1 bytes i1 unicode id


  • 代码块

for.... if.... while....下是象征意义的代码块,不是python严格定义的

一个代码块为一个模块,一个函数(def),一个类(class),一个文件等。

交互模式下每行是一个代码块(可理解为每一行在一个文件中)

  • id,is,==

= 赋值

== 数值相同

id 内存地址(门牌号,唯一),指向id相同,在内存中是一个

 

判断id相同 i1 is i2

判断值相同 i1 == i2 (is为True,==必为True,反之不一定)

 

  • 小数据池(缓存机制,驻留机制)

python对内存做的优化,将-5~256整数,以及一定规则的字符串,提前在内存中创建了池(容器),容器内固定放了以上值。

目的:1.节省内存 2.提高性能与效率

应用的数据类型:整数,字符串,bool值

一定规则的字符串?:不是重点

问题:

s1 = 'alex@'
s2 = 'alex@'
print(s1 is s2)
#在交互模式下为False,在pycharm中为True

  涉及代码块:

    s1 = 'alex@'

    s2 = 'alex@'

    python对于同一个代码块的变量,初始化对象命令时,会将变量与值的对应关系放到一个字典中,dic = {'s1': alex@的内存地址},如果下面代码再次初始化对象命令,会先从字典中寻找,如果存在相同的值,会复用(s2 = s1),即指向同一内存地址。

    对于不同代码块,进行初始化对象命令,会从小数据池中寻找。

def func1():
    i1 = 100
    print(id(i1))
def func2():
    i2 = 100
    print(id(i2))
func1()
func2()

def func1():
    i1 = 1000
    print(id(i1))
def func2():
    i2 = 1000
    print(id(i2))
func1()
func2()
'''
1957215520
1957215520
1826416549616
1826415947472
'''

 

  • 编码

ACSⅡ:字母,数字,特殊字符。8位。

unicode:万国码,包含世界所有文字。

    创建初:16位

    升级:32位

对unicode升级:utf-8。A:8位

          欧:16位

          中:24位

gbk/gb2312:只含字母,数字,特殊字符,中文。A:8位

                      中:16位

1.编码间不能互相识别

2.网络传输或文件存储010101...必须使用非unicode编码

python3中:

  str:内存(内部)编码方式为unicode,其他都是utf-8。

  bytes:也是基础数据类型,和str相当于双胞胎,str所有方法bytes类型都适用。

  区别:

    str bytes
英文 表现形式 s1 = 'alex' b1 = b'alex'
内部编码 unicode 非unicode
中文 表现形式 s1 = '太白' b1 = b'十六进制表示'
内部编码 unicode 非unicode

  使用:想将一部分内容(字符串)写入文件或通过网络socket传输,必须转为bytes类型,平时代码中使用字符串。

  转化:str --> bytes:encode编码

      s1 = 'alex'

      b1 = s1.encode('编码类型如utf-8')

     bytes --> str:decode解码

      b2 = b'\xcc\xab\xb0\xd7' #gbk的bytes

      s2 = b1.decode('gbk')

标签:alex,day6,Knight,s1,bytes,i1,unicode,id
来源: https://www.cnblogs.com/hlzzhq/p/15869705.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有