七步学习法和代码块、编码

小甜点:

  七步记忆法

    第一步: 预习

    第二步:听课

    第三步:课间练习

    第四步:下午或者晚上练习。 (大量的)

    第五步:晚上睡觉前,回忆。花5-10分钟。

    第六步:每天早晨

    第七步:每周总结

代码块:

  一个函数,一个文件,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块。

is  ---id

id()查询对象的内存

 == 比较两边的数值

  is     比较的是两边的内存地址

小数据池:(也中缓存池,驻留池)

  提前: int  str  bool

     1. 节约内存

   2. 提高性能和效率

小数据池是什么呢?

  是Python解释器,在内存中开辟的一段内存空间,可以理解成一个容器,这里把它叫做一个'池‘。用来存放-5到256的整数,一定规则的字符串。后续程序中,如果设置的变量指向的是小数据池的内容那么就不会再在内存中重新创建。

小数据池和代码块的关系

  同一个代码块:Python解释器在执行时,遇到 了初始化对象的命令时,它会将这个变量名和数值存放到一个字典中,再次遇到时它会从字典中寻找。

       不同代码块: Pyhton在执行时,直接从小数据池中寻找,满足条件id相同。

编码:

  python3x:

      英文:

        str:   表现形式: s1 = 'chris'

            内部编码方式: unicode

        bytes:   表现形式:  s1 = b'chris'

            内部编码方式:非unicode

      中文:

        str:    表现形式: s1 = '追梦少年'

              内部编码方式:unicode

        bytes:    表现形式: s1 = b'xe5xa4xa9xe5xa4xa9xe5x90x91xe4xb8x8a'

               内部编码方式:非unicode

      只有当你想要存储一些内容到文件中,或者通过网络传输时,才要用bytes类型

           str ----> bytes   encode

          bytes ----> str   decode

# python中字符编码问题
# 英文情况:
s1 = 'chris'
s2 = b'crhis'
print(s1,type(s1))   # chris <class 'str'>
print(s2,type(s2))   # b'crhis' <class 'bytes'>
# 中文情况:
chinese1 = '天天向上'
utf8_bytes = chinese1.encode()  # 默认'utf-8'
print(chinese1,type(chinese1))                      # 天天向上 <class 'str'>
print(utf8_bytes,type(utf8_bytes))          # 'utf-8'的bytes类型         b'xe5xa4xa9xe5xa4xa9xe5x90x91xe4xb8x8a' <class 'bytes'>
gbk_bytes = chinese1.encode('gbk')
print(gbk_bytes,type(gbk_bytes))            # b'xccxecxccxecxcfxf2xc9xcf' <class 'bytes'>

print(utf8_bytes.decode('utf-8'),type(utf8_bytes.decode('utf-8')))    # 天天向上 <class 'str'>
print(gbk_bytes.decode('gbk'),type(gbk_bytes.decode('gbk')))          # 天天向上 <class 'str'>

 补充:

  如果b1: gbk的bytes类型,-----》 utf-8 的bytes类型怎么办?

通过unicode中转,在python中字符串内部编码方式为unicode

# 如果b1: gbk的bytes类型,-----> utf-8 的bytes类型怎么办?
msg = "明天,有雨,出门记得带伞。"   # 这是unicode编码的字符串
gbk_msg = msg.encode('gbk')        # 将unicode编码为gbk的bytes类型
print(gbk_msg)  # b'xc3xf7xccxecxa3xacxd3xd0xd3xeaxa3xacxb3xf6xc3xc5xbcxc7xb5xc3xb4xf8xc9xa1xa1xa3'
## 假如同事给我发送的是gbk_msg,q,我应该先用gbk解码为unicode,然后再把字符串编码为utf-8的bytes类型
middle_msg = gbk_msg.decode('gbk')
print(middle_msg)              # 明天,有雨,出门记得带伞。
utf8_msg = middle_msg.encode('utf-8')
print(utf8_msg) # b'xe6x98x8exe5xa4xa9xefxbcx8cxe6x9cx89xe9x9bxa8xefxbcx8cxe5x87xbaxe9x97xa8xe8xaexb0xe5xbex97xe5xb8xa6xe4xbcx9exe3x80x82'
原文地址:https://www.cnblogs.com/chris-jia/p/9460911.html