python基础——1.编码,逻辑运算,转义字符,小数据池


  • python是动态强类型解释性语言

    • 1.动态:执行期间检查数据类型的语言.不会给变量指定类型,赋值时得到数据类型.js
      静态:执行前编译时检查类型.写代码时,每声明一个变量都指定类型.c++ java c#
    • 2.强类型:强制数据类型的语言.不强制转换数据类型不变.
      弱类型:忽略数据类型.一个变量可赋值不同数据类型.js
    • 3.编译型:执行前把程序编译好.
      解释型:边执行边编译.
  • 各种编码方式

    • ascii: 只能显示英文,特殊字符.1个字节,8位

    • 万国码(unicode): 初始2字节,16位.中文9万+,不够,32位

    • utf8(16,32): 万国升级.1字节表示英文;欧洲2字节;亚洲3字节

    • gbk(国产): 只用于中文和ascii中文字,英文1字节,中文2字节

    • 查看报错,看是几位能确定用的是utf-8还是gbk

      • 1.utf8 A: 8位 1字节 | china: 24位 3字节
      • 2.gbk A: 8位 1字节 | china: 16位 2字节
    • 1.各个编码之间的二进制互不识别,会产生乱码.

    • 2.文件的存储和传输不能是unicode,只能utf-8,16,gbk,gb2312

  • Python的编码方式及相关知识

    • 1.python2默认编码方式是ascii码 解决中文乱码 # -- encoding:utf-8 --

    • 2.python3默认编码方式是utf-8 解决中文乱码 # -- coding:utf-8 --

    • 3.python中str在内存中是unicode编码.

    • 4.bytes是一种数据类型,python3转换成bytes(utf-8,gbk,gb2312,ascii)类再传输

      示例 点击查看代码
              # 对于英文
                str       表现形式  s = "sm"
                          编码方式  01000010 unicode
                bytes     表现形式  s = b"sm"
                          编码方式  01010000 utf-8 gbk...
      
              # 对于中文
                str       表现形式  s = "什么"
                          编码方式  00100001 unicode
                bytes     表现形式  s = b"x\e81\e01" \中间 一个代表一字节 3字节是utf-8 2字节是gbk
                          编码方式  01000101 utf-8,gbk
      
              # bytes的表现形式
                  s = "sm"
                  s = b"sm"
      
                  s = "什么"
                  s = b"什么"          # 这里会报错
                  print(s, type(s))
      
                  s = "sm"
                  s = s.encode("utf-8")       编码,将str转换成bytes
                  s = s.encode("gbk")
                  s = "什么"
                  s = s.encode("utf-8")
                  s = s.encode("gbk")
                  print(s, type(s))
      
    • 5.在python3以后,字符串和bytes类型彻底分开了,字符串是以字符位单位进行处理的,bytes类型是以字节为单位处理的.

    • 6.bytes数据类型所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列对象.

    • 7.bytes对象只负责以二进制字节序列的形式记录需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定.python3中,bytes通常用于网络数据传输,二进制图片和文件的保存等等.可以通过调用bytes()生成bytes实例,其值形式为b"xxxx",其中”xxx“为一至多个转义的十六进制字符串(单个x的形式为:\x12,其中x为小写的十六进制转义字符,12为2位16进制数)组成的序列.每个16进制数代表1字节(8位2进制数,取值范围0-255),对于同一个字符串如果采用不同的编码方式生成bytes对象,就会形成不同的值.

      示例 点击查看代码
               b = b""                #创建空的bytes
               b = bytes()            #创建空的bytes
               b = b"hello"           #指定这个hello为bytes类型
               b = bytes("str", encoding="编码类型")    #利用内置的bytes方法,将字符串转换为指定编码的bytes
               b = str.encode(”编码类型“)               #利用字符串的encode方法编码成bytes,默认为utf-8类型
               b = bytes.decode("编码类型")             #将bytes对象解码成字符串,默认使用utf-8进行解码
      
  • 这个专有名词不知道如何描述

    • python2在编译安装时,可通过参数 --enable-unicode=us2或--enable-unicode=ucs4分别用于指定2字节或4字节表示一个unicode字符

    • python3无法选择,默认ucs4

      查看当前python中表示unicode字符串时占用的空间:
      import sys
      print(sys.maxunicode)
      # 如果值是65535,则表示使用ucs2标准,即2字节
      # 如果值是1114111,则表示使用ucs4标准,4个字节
      
  • 零散知识点

    • 1.python中没有常量,约定俗成有常量,一直不变的,全部大写的是常量.

    • 2.优先级问题
      ()>not>and>or

    • 3.逻辑运算

    • 4.小数据池

    • 5.转义字符

    • 6.深浅拷贝