七步学习法和代码块编码

Posted chris-jia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七步学习法和代码块编码相关的知识,希望对你有一定的参考价值。

小甜点:

  七步记忆法

    第一步: 预习

    第二步:听课

    第三步:课间练习

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

    第五步:晚上睡觉前,回忆。花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 = bcrhis
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‘

 


以上是关于七步学习法和代码块编码的主要内容,如果未能解决你的问题,请参考以下文章

python学习之旅-06 之小数据池,编码

pyhon学习第六天 代码块,小数据池(缓存机制,驻留机制),is == id =,字符编码

iOS学习之代码块(Block)

如何在 Django Summernote 中显示编程片段的代码块?

Sphinx - 在代码块片段中使用省略号 (...)

负载均衡算法之轮询(Round Robin)法和随机(Random)法 Java 代码实现方法学习