zoukankan      html  css  js  c++  java
  • 《Python》 代码块、小数据池和编码转换

    一、代码块

        Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元执行的。

        什么是代码块:一个py文件,一个函数,一个文件,一个类都是一个代码块。

        作为交互方式输入的每一行都是一个代码块。

    二、id is ==

        id是内存地址,在内存中,id都是唯一的如果两个变量指向的值得id相同,就证明在内存中是同一个。

        is判断的是两个变量的id值是都相同,如果is是True,==一定是True。  

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

        小数据池是python对内存做的一个优化:将-5~256的整数以及一定的规则的字符串,提前在内存中创建了一个池,池里固定的放了一些数据

        目的:节省内存、提高性能与效率

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

          数字:-5~256的整数

          bool值:就是True,False,无论你创建多少个变量指向True,False,那么他在内存中只存在一个。

          字符串:       

            1,字符串的长度为0或者1,默认都采用了驻留机制(小数据池)。

        

            2,字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留。

         

            3,用乘法得到的字符串,分两种情况。

              1. 乘数为1时:

                仅含大小写字母,数字,下划线,默认驻留。

        

                含其他字符,长度<=1,默认驻留。

              

                含其他字符,长度>1,默认驻留。

              

              2. 乘数>=2时:

                仅含大小写字母,数字,下划线,总长度<=20,默认驻留。

              

          4,指定驻留。  

            from sys import intern
            a = intern('hello!@'*20)
            b = intern('hello!@'*20)
            print(a is b)
            #指定驻留是你可以指定任意的字符串加入到小数据池中,让其只在内存中创建一个对象,多个变量都是指向这一个字符串。

        满足以上字符串的规则时,就符合小数据池的概念。

    四、编码   

        编码之间不能互相识别

        网络传输或者硬盘存储的010101,必须是以非uniconde编码方式的010101.(因为Unicode太占资源了,避免资源浪费和网络堵塞)

        大环境python3x:

          str:内存(内部)编码方式为unicode

          bytes:python的基础数据类型之一,和str相当一双胞胎。

          区别:

            英文字母:

              str表现形式:s1='alex'   内部编码方式:unicode

              byte表现方式:s1=b'alex' 内部编码方式:非unicode

            中文:          

              str表现形式:s1='太白'   内部编码方式:unicode

              byte表现方式:s1=b'xe5xa4xaaxe7x99xbd'   内部编码方式:转换为utf-8

          转换:

            中文用encode只能转换为utf-8和gbk,英文可以转换成任意编码

            name = '太白'
            name = name.encode('utf-8')
            print(name)  #b'xe5xa4xaaxe7x99xbd'

            name = '太白'
            name = name.encode('gbk')
            print(name)  #b'xccxabxb0xd7'
     

  • 相关阅读:
    对websoceket进行压力测试(一)
    学习springboot的一个网站
    重装mysql数据库
    websocket扫盲:基础知识(二)
    json-lib 之jsonConfig详细使用
    hibernate的like用法(用占位符解决)
    【转载】hibernate查询参数绑定
    Struts2 Anotation action
    PLSQL怎样导出oracle表结构
    从命令行启动oracle服务
  • 原文地址:https://www.cnblogs.com/yzh2857/p/9450690.html
Copyright © 2011-2022 走看看