精华内容
下载资源
问答
  • 代码块Python程序是由代码块构造的。块是一个python程序的文本...就是咱们在cmd进入Python解释器里面,每一行代码都是一个代码块,例如: 而对于一个文件的两个函数,也分别是两个不同的代码块: ...

    代码块:

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

    代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。

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

    什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块,例如:

     

    而对于一个文件中的两个函数,也分别是两个不同的代码块:

     

     

     

     

     

    id  is  ==

    python中id是内存地址,利用id()内置函数可以去查询一个数据的内存地址:

    name = 'alex'
    print(id(name))  # 143531233806

    那么 is 是什么? == 又是什么?

    == 是比较的两边的数值是否相等,而 is 是比较的两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。

     

    可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同。

     

    小数据池

    小数据池,也称为小整数缓存机制,或者称为驻留机制等等

    那么到底什么是小数据池?他有什么作用呢?

    大前提:小数据池,只针对,整数,字符串,bool值。

     

    Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。

    python会将一定规则的字符串在字符串驻留池中,创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。

    其实,无论是缓存还是字符串驻留池,都是python做的一个优化,就是将~5-256的整数,和一定规则的字符串,放在一个‘池’(容器,或者字典)中,无论程序中那些变量指向这些范围内的整数或者字符串,那么他直接在这个‘池’中引用,言外之意,就是内存中之创建一个。

    优点:能够提高一些字符串,整数处理人物在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从‘池’里拿来用,避免频繁的创建和销毁,提升效率,节约内存。

    缺点:在‘池’中创建或插入字符串,整数时,会花费更多的时间。

    int:那么大家都知道对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。

     

     

    一定规则的字符串

    str:字符串要从下面这几个大方向讨论:

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

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

     

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

      3.1 乘数为1时:

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

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

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

      3.2 乘数>=2时:

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

    4,指定驻留。

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

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

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

     

    编码

    ascii: 字母,数字,特殊字符。
    A: 0000 0010
    B: 0000 0010

    8位一个字节表示


    unicode: 万国码,包含世界上所有的文字。
    创建之初:
      A :0000 0010 0000 0010
      中:0001 0010 0000 0010

    16位两个字节表示


    升级:
      A :0000 0010 0000 0010 0000 0010 0000 0010 32 位
      中:0001 0010 0000 0010 0000 0010 0000 0010

    32位4个字节表示

    浪费资源。

     

    对unicode 升级:utf-8
    Ascii :0000 0010 8位
    欧:0000 0010 0000 0010 16位    
    中:0000 0010 0000 0010 0000 0010 24位

    gb2312: 国标:字母,数字,特殊字符,中文。
    A :0000 0010 8位
    中:0000 0010 0000 0010 16位

    1, 编码之间能不能互相识别。 不能互相识别。
    2, 网络传输,或者硬盘存储的010101,必须是以非uniocde编码方式的01010101.

    大环境python3x:
    str:内存(内部)编码方式为Unicode。
    bytes:python的基础数据类型之一,他和str相当于双胞胎,str拥有的所有方法,bytes类型都适用。

    int,tuple,list,dict,set
    区别:
    英文字母:
      str:
      表现形式:s1 = 'alex'
      内部编码方式:unicode


      bytes:
      表现形式:b1 = b'alex'
      内部编码方式:非unicode

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


      bytes:
      表现形式:b1 = b'\xe5\xa4\xaa\xe7\x99\xbd'
      内部编码方式:非unicode

    如何使用:
    你想将一部分内容(字符串)写入文件,或者通过网络socket传输,这样这部分内容(字符串)必须转化成bytes才可以进行。
    平时你代码中,使用字符串。

    编码转换:  

    # s1 = '太白'
    # b1 = s1.encode('utf-8')
    # b2 = s1.encode('gbk')
    # print(b1) # b'\xe5\xa4\xaa\xe7\x99\xbd'
    # print(b2)

    # str --- > bytes encode 编码
    # s1 = 'alex'
    # s2 = '太白'
    # b1 = s1.encode('utf-8')
    # print(b1)
    # b2 = s2.encode('gbk')
    # print(b2)

    # bytes ---> str decode 解码
    b1 = b'\xcc\xab\xb0\xd7' # gbk 的bytes
    s2 = b1.decode('gbk')
    print(s2)

     

     

    转载于:https://www.cnblogs.com/python13/p/9452571.html

    展开全文
  • 代码块Python程序是由代码块构造的。块是 一个python程序的文本,他...就是咱们在cmd进入Python解释器里面,每一行代码都是一个代码块, id,is,== == 是比较的两边的数值是否相等,而 is 是比较的两边的...

    代码块:

    Python程序是由代码块构造的。块是

     

    一个python程序的文本,他是作为一个单元执行的。

    代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。

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

    什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块,

    id,is,==

    == 是比较的两边的数值是否相等,而 is 是比较的两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。

     可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同

    三、小数据池

    小数据池,也称为小整数缓存机制,或者称为驻留机制等等

    大前提:小数据池,只针对,整数,字符串,bool值。

    Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。

    python会将一定规则的字符串在字符串驻留池中,创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。

    其实,无论是缓存还是字符串驻留池,都是python做的一个优化,就是将~5-256的整数,和一定规则的字符串,放在一个‘池’(容器,或者字典)中,无论程序中那些变量指向这些范围内的整数或者字符串,那么他直接在这个‘池’中引用,言外之意,就是内存中之创建一个。

    优点:能够提高一些字符串,整数处理人物在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从‘池’里拿来用,避免频繁的创建和销毁,提升效率,节约内存。

    缺点:在‘池’中创建或插入字符串,整数时,会花费更多的时间。

    int:那么大家都知道对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。

    str:字符串要从下面这几个大方向讨论:

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

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

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

      3.1 乘数为1时:

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

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

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

    3.2 乘数>=2时:

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

    4,指定驻留。

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

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

    总结:

    Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其重用。换句话说:执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会先在字典中查询记录,如果有同样的记录那么它会重复使用这个字典中的之前的这个值。所以在你给出的例子中,文件执行时(同一个代码块)会把i1、i2两个变量指向同一个对象。

      如果是不同的代码块,他就会看这个两个变量是否是满足小数据池的数据,如果是满足小数据池的数据则会指向同一个地址。

     

    转载于:https://www.cnblogs.com/yidashi110/p/9450502.html

    展开全文
  • 什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块,例如: 而对于一个文件中的两个函数,也分别是两个不同的代码块: 二,id,is,== 在Python中,id是什么?id是内存地址,比如你...

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

    代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。

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

    什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块,例如:
    在这里插入图片描述

    而对于一个文件中的两个函数,也分别是两个不同的代码块:
    在这里插入图片描述

    二,id,is,==

    在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址:

     name = 'Tom'
     print(id(name))
     #5117952
    

    那么 is 是什么? == 又是什么?

    == 是比较的两边的数值是否相等,而 is 是比较两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。

    在这里插入图片描述

    可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同。

    三,小数据池

    小数据池,也称为小整数缓存机制,或者称为驻留机制等等。

    那么到底什么是小数据池?他有什么作用呢?

    大前提:小数据池,只针对,整数,字符串,bool值。

    官方对于整数,字符串的小数据池是这么说的:

    对于整数,Python官方文档中这么说:

    The current implementation keeps an array of integer objects for all
    integers between -5 and 256, when you create an int in that range you
    actually just get back a reference to the existing object. So it
    should be possible to change the value of 1. I suspect the behaviour
    of Python in this case is undefined.

    对于字符串:

    Incomputer science, string interning is a method of storing only
    onecopy of each distinct string value, which must be immutable.
    Interning strings makes some stringprocessing tasks more time- or
    space-efficient at the cost of requiring moretime when the string is
    created or interned. The distinct values are stored ina string intern
    pool. –引自维基百科

    翻译并汇总一下,表达的意思就是:

    Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。

    python会将一定规则的字符串在字符串驻留池中创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。

    其实,无论是缓存还是字符串驻留池,都是python做的一个优化,就是将-5~256的整数,和一定规则的字符串,放在一个‘池’(容器,或者字典)中,无论程序中那些变量指向这些范围内的整数或者字符串,那么他直接在这个‘池’中引用,言外之意,就是内存中只创建一个。

    优点:能够提高一些字符串,整数处理在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从‘池’里拿来用,避免频繁地创建和销毁,提升效率,节约内存。

    缺点:在‘池’中创建或插入字符串、整数时,会花费更多的时间。

    int:那么大家都知道对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。

    在这里插入图片描述

    那么对于字符串的规定呢?

    str:字符串要从下面这几个大方向讨论:

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

    在这里插入图片描述

    2,字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留。
    在这里插入图片描述

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

    3.1 乘数为1时:

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

    3.2 乘数>=2时:

    仅含大小写字母,数字,下划线,总长度<=20,默认驻留。
    在这里插入图片描述

    4,指定驻留。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    from sys import intern
    a = intern('hello!@'*20)
    b = intern('hello!@'*20)
    print(a is b)
    #指定驻留是你可以指定任意的字符串加入到小数据池中,让其只在内存中创建一个对象,多个变量都是指向这一个字符串。
    

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

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

    看一下用了小数据池(驻留机制)的效率有多高:

    显而易见,节省大量内存在字符串比较时,非驻留比较效率o(n),驻留时比较效率o(1)。

    在这里插入图片描述

    四,代码块与小数据池的关系。

    同样一段代码,为什么在交互方式中执行,和通过python代码的文件执行结果不同呢?

    # pycharm 通过运行文件的方式执行下列代码:
    i1 = 1000
    i2 = 1000
    print(i1 is i2)  # 结果为True
    

    通过交互方式中执行下面代码:

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    >>> i1 = 1000
    >>> i2 = 1000
    >>> print(i1 is i2)
    False
    

    结果为什么不同呢?难道是解释器出问题,还是pycharm软件出问题了?

    这是因为代码块内的缓存机制,和代码块与代码块之间的缓存机制不同!

    Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其重用。换句话说:执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会先在字典中查询记录,如果有同样的记录那么它会重复使用这个字典中的之前的这个值。所以在你给出的例子中,文件执行时(同一个代码块)会把i1、i2两个变量指向同一个对象。

    如果是不同的代码块,他就会看这个两个变量是否是满足小数据池的数据,如果是满足小数据池的数据则会指向同一个地址。所以:i1、i2赋值语句分别被当作两个代码块执行,但是他们不满足小数据池的数据所以会得到两个不同的对象,因而is判断返回False。

    更多验证:

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    # 虽然在同一个文件中,但是是不同的代码块,不满足小数据池(驻存机制),则指向两个不同的地址。
    def func():
        i1 = 1000
        print(id(i1))  # 2288555806672
    
    def func2():
        i1 = 1000
        print(id(i1))  # 2288557317392
    
    func()
    func2()
    

    最后,在深入一点,对于同一个代码块的变量复用的问题,只能针对于数字,字符串,bool值,而对于其他数据类型是不成立的。

    # 同一个代码块下,数字,字符串,bool值的复用成立。
    a1 = 1000
    a2 = 1000
    print(id(a1),id(a2))  # 2419837390800 2419837390800
    
    s1 = 'alexsb@'
    s2 = 'alexsb@'
    
    print(id(s1),id(s2))  # 2278732245624 2278732245624  
    
    f1 = True
    f2 = True
    print(id(f1),id(f2))  # 1672093872 1672093872
    
    # 同一个代码块下,元祖,列表,字典的复用不成立。
    tu1 = (1,2,3)
    tu2 = (1,2,3)
    print(id(tu1),id(tu2))  # 2278732278088 2278732279312
    
    l1 = [1, 2, 3]
    l2 = [1, 2, 3]
    print(id(l1),id(l2))  # 2278733685000 2278733685192
    
    dic1 = {'name':'taibai'}
    dic2 = {'name':'taibai'}
    print(id(dic1),id(dic2))  # 2278728382728 2278728382856
    
    展开全文
  • 一、代码块。if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) ...虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块。python中真正意义的代码块是什么? 块是一个p...

     

    一、代码块。
    if True:
      print(333)
      print(666)

    while 1:
      a = 1
      b = 2
      print(a+b)

    for i in '12324354':
      print(i)

    虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块。
    python中真正意义的代码块是什么?

    块是一个python程序的文本,他是作为一个单元执行的。
    代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。

    而对于一个文件中的两个函数,也分别是两个不同的代码块:

    def func():
      print(333)
    class A:
      name = 'xiaojing

     

    交互模式下,每一行是一个代码块。

    什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块
    >>> i1 = 520  可以理解为这一行在一个文件中。
    >>> i2 = 520  可以理解为这一行在另一个文件中。

     

     

    二、id is ==

    在Python中,id是什么?id是内存地址,== 是比较的两边的数值是否相等,而 is 是比较的两边的内存地址是否相等。

    如果内存地址相等,那么这两边其实是指向同一个内存地址。

     

    name = 'shuaige'                   # 赋值
    print('shuaige' == 'shuaige')   # 数值相同
    name = 'abc123'
    name1 = 'abc123'
    print(id(name),id(name1)) # 2370269674608 2370269674608
    在内存中id都是唯一的,如果两个变量指向的值的id相同,就证明他们在内存中是同一个。
    is 判断的是两个变量的id值是否相同。
    如果is是True, == 一定是True。== 是True,is不一定是True

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

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

    小数据池是python对内存做的一个优化:
    python将 -5 ~256 的整数,以及一定规则的字符串,bool值,进行了缓存,就是提前在内存中创建了池(容器),
    在这些容器里固定的放了这些数据。
    为什么这么做???
    1,节省内存。
    2,提高性能与效率。

    int:对于整数来说,小数据池的范围是 -5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。
    i1 = 110
    i2 = 110

    i3 = 110

     

    一定规则的字符串?

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

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

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

         3.1 乘数为1时:仅含大小写字母,数字,下划线,默认驻留。

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

     

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

     

    3.2 乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,默认驻留。

     

     4,指定驻留。

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

     

     

     

     

    四、代码块与小数据池的关系

    同样一段代码,为什么在交互方式中(cmd命令的终端)执行,和通过pycharm执行结果不同呢?

    复制代码
    # pycharm 通过运行文件的方式执行下列代码:
    i1 = 520
    i2 = 520
    print(i1 is i2)  # 结果为True
    通过交互方式中执行下面代码:
    >>> i1 = 520
    >>> i2 = 520
    >>> print(i1 is i2) #结果为False
    复制代码

     

    那为什么结果会不同呢?

    在同一个代码块中的变量(数字,字符串),初始化对象的命令时,首先会从小数据池中找,如果没有找到,它会将变量与值的对应关系放到一个字典中,
    同一个代码块中的其他变量遇到初始化对象的命令,他会先从字典中寻找,如果存在相同的值,他会复用,指向的都是同一个内存地址。

    所以,在pycharm中的两行变量赋值中(实际上在同一个代码块中的赋值):
    (如果这个变量不是数字或者字符串,那么值相同,地址也是不同的)

    s1 = 1000

    s2 = 1000

    print(s1 is s2)         #True

    而在cmd命令的终端中(交互模式),每一行都是一个代码块,因此在cmd命令的终端中,s1和s2是在不同的代码块,因此s1 is s2 是False

     

    l1 = [1,2]
    l2 = [1,2]
    print(id(l1),id(l2)) # 1745841050760 1745840183304
    print(l1 == l2)   # True
    print(l1 is l2)     # False


    在不同的代码块:初始化对象的命令时,首先从小数据池中寻找,如果在小数据池,那么地址相同,如果不在小数据池中,则创建新的地址。

    不同代码块中:

    复制代码
    def func():
        i1 = 1000
        print(id(i1))
    
    
    def func1():
        i2 = 1000
        print(id(i2))
    func()
    func1()
    # 一个函数是一个代码块,因此这里的i1的地址跟i2的地址不是同一个地址
    复制代码

    总结:
    同一代码块中:
    如果变量在小数据池,那么地址相同,
    如果不在小数据池,那么如果变量是数字或者字符串,也会复用地址,地址也相同,
    如果变量不是数字或者字符串,那么地址不同。

    不同一代码块中:
    如果变量在小数据池,那么地址相同,
    如果不在小数据池,那么地址不同。

     

     


    五、编码二
    ASCII: 字母,数字,特殊字符。
    A: 0000 0010
    B: 0000 0011
    unicode: 万国码,包含世界上所有的文字。
    创建之初:16位
    A :0001 0010 0000 0010
    中:0011 0010 0000 0110
    升级:32 位
    A :0000 0010 0100 0010 0000 0010 1000 0010 
    中:0001 0010 0010 0010 0000 0010 0010 0010
    缺点:浪费资源。


    对unicode 升级:utf-8:最少用8位表示一个字符。
    A :0000 0010     8位
    欧:0000 0010 0100 0010     16位
    中:0000 0010 0001 0010 0000 0010      24位

    GBK: 国标:字母,数字,特殊字符,中文。
    A :0000 0010     8位
    中:0000 0010 0001 0010    16位

    1, 编码之间不能互相识别。
    2, 网络传输,或者硬盘存储的010101,必须是以非uniocde编码方式的01010101.

    3,大环境python3x:
    str:内存(内部)编码方式为Unicode,因此python3中的字符串不能直接用于网络传输和硬盘存储,为了解决这个问题,就出现了bytes
    bytes:python的基础数据类型之一,他和str相当于双胞胎,str拥有的所有方法,bytes类型都适用。

    区别:
    英文字母:
    str:
    表现形式:s1 = 'xiaohei'
    内部编码方式:unicode


    bytes:
    表现形式:b1 = b'xiaohei'
    内部编码方式:非unicode

     

    中文:
    str:
    表现形式:s1 = '小黑'
    内部编码方式:unicode


    bytes:
    表现形式:b1 = b'\xe5\xb0\x8f\xe9\xbb\x91'
    内部编码方式:非unicode

    如何使用:
    你想将一部分内容(字符串)写入文件,或者通过网络socket传输,这样这部分内容(字符串)必须转化成bytes才可以进行。
    在平时的代码中,可以直接使用字符串。

    具体使用方法:encode编码 decode解码(bytes拥有str的所有方法)

    encode()不写参数,默认编码成utf-8

    str ---> bytes  encode 编码
    非中文可以使用encode(),也可直接在字符串前加一个 b 表示bytes
    s1 = 'xiaohei'

    b1 = b'xiaohei'     --->等于 b1 = s1.encode()
    b2 = b1.upper()

    print(s1, type(s1))

    print(b1, type(b1))
    print(b2, type(b2))

     

    中文只能使用encode()
    s1 = '小黑'
    b1 = s1.encode('utf-8')
    b2 = s1.encode('gbk')
    print(b1) # b'\xe5\xb0\x8f\xe9\xbb\x91'
    print(b2) # b'\xd0\xa1\xba\xda'

     

    bytes ---> str decode  解码
    b1 = b'\xd0\xa1\xba\xda'    #gbk的bytes
    s2 = b1.decode('gbk')        #对应用gbk的解码
    print(s2)

    转载于:https://www.cnblogs.com/yidashi110/p/10092291.html

    展开全文
  • 一、代码块 Python程序是由代码块构造的。块是一个python程序的...就是咱们在cmd进入Python解释器里面,每一行代码都是一个代码块,例如: 而对于一个文件的两个函数,也分别是两个不同的代码块: 二、...
  • 代码块

    2019-01-06 16:49:00
    Python程序是由代码块构造的。块是一个python程序的...就是咱们在cmd进入Python解释器里面,每一行代码都是一个代码块,例如: 一个文件,模块,类,函数 cmd一行就是一个代码块python内置,为了节省资源,提高效率...
  • 一、代码块Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元...就是咱们在cmd进入Python解释器里面,每一行代码都是一个代码块。 不同的代码块: def func(): print(333) class ...
  • 字符串处理函数大家肯定都经常用,甭管你用什么语言,这一还是不能少的。一直以来都把python的strip理解成了去掉收尾的空格,因为用过java或者VB的程序员应该知道,有个trim可以去掉首尾的空格。不过,这次我就没...
  • python之小数据池

    2019-04-01 09:31:00
    代码块 Python 程序 是由代码块构造的。...就是咱们在cmd进入python解释器里同,每一行代码就是一个代码块。 对于一个文件的两个函数,也分别是两个不同的代码块代码块的缓存机制 ...
  • Python循环语句

    2020-12-21 22:33:45
    大家肯定搞不明白:什么叫遍历??? 遍历结构可以是字符串、文件、range()函数或组合数据类型等。 遍历循环可以理解为从遍历结构逐一提取元素,放在循环变量,对于每个所提取的元素执行一次语句。for
  • 上篇文章 Python装饰器为什么难理解?从函数到装饰器一步一步介绍了Python装饰器的来由,不知你对装饰器理解了没有,强烈建议你...但凡是在多个地方出现雷同的代码块,且这些代码与核心业务没有直接关联的都可以用...
  • for循环需要一个代码块开告诉程序每次做什么,这个代码块称之为循环体。 for looper in [1,2,3,4,5]: print looper 示例:循环的值的列表保存在一个括号里面,Python就是利用括号以及数字之间的逗号来建立...
  • 小数据池,不同代码块的缓存机制,也称为小整数缓存机制,或者称为驻留机制等等,博主认为,只要你在网上查到的这些名字其实说的都是一个意思,叫什么因人而异。那么到底什么是小数据池?他有什么作用呢?前提条件:...
  • python中普通函数定义是通过def关键字进行定义,然后再def中定义代码块,那么什么叫匿名函数呢?匿名函数顾名思义,没有函数名,而函数体也不是复杂的代码块,而是表达式。 2. lambda使用 2.1 基础应用 lambda ...
  • 2. Python3 基础入门

    2019-09-23 20:57:14
    体验过2.x版本的编码问题,才知道什么叫难受。 # -*- coding: cp-1252 -*- 注释 当行注释:# 被注释内容 多行注释:'''被注释内容''',或者"""被注释内容""" 行与缩进 缩进的空格数是可变的,但是同一个代码块的语.....
  •  函数在编程语言就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字。可以通过函数名在程序的不同地方多次执行(这函数的调用)。函数在编程语言有基本分为:预定义...
  • 一、上下文管理协议1.1、什么叫上下文管理协议?with open('a.txt') as f:  '代码块'即with语句,为了让一个对象兼容with语句,必须在这个对象的类声明__enter__和__exit__方法with语句小结:with obj as f: '...
  • 在项目的开发 有一些代码块是反复使用 就会封装起来 封装起来的我们就函数 2. 为什么定义函数 优点:方便(提高代码的利用率) 提高代码的可读性 便于调试bug: 3. 函数的分类 系统库函数 自定义函数...
  • Python函数定义-位置参数-返回值

    千次阅读 2019-05-04 20:37:38
    函数在编程语言就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字。可以通过函数名在程序的不同地方多次执行(这函数的调用)。函数在编程语言有基本分为:预定义函数...
  • Python的Django的学习之路(第二篇)

    千次阅读 2019-04-18 00:13:03
    有一种程序设计模式MVC,其核心思想是分工,解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可一直性,实现向后兼容 M为Model,主要封装对数据库层的访问,对数据的数据进行增删改查 V为View,用于封装...
  • 函数:函数就是实现某一特定功能的代码块;在类,函数又方法(对某一个功能的封装) 为什么要使用函数? 飞机的功能: 左移、右移、上移、下移、发射子弹等 a.没有函数的时候: 问题:1.一样的功能对应的代码...
  • day16-小数据池

    2018-10-30 11:18:00
    一,什么代码块 Python程序是由代码块构造的。...就是咱们在cmd进入Python解释器里面,每一行代码都是一个代码块,例如: 而对于一个文件的两个函数,也分别是两个不同的代码块: 二,id...
  • 小数据池及编码

    2018-08-09 16:50:00
    1.代码块 if True: print(333) print(666) while 1: a = 1 ...虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块。python中真正意义的代码块是什么?一个模块,一个...
  • 练习14(编码)

    2020-12-12 17:28:17
    练习14 ...# 虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块。 # python中真正意义的代码块是什么? # 一个模块,一个函数,一个类,一个文件等都是一个代码块。 def func():
  • 小数据池 1.什么是小数据池 小数据池就是python中一种提高效率的方式,固定的数据类型使用同一个内存地址。 小数据池支持str字符串,int数字,bool布尔值。...一个文件,一个模块,一个函数,一个类都叫代码块,...
  • 类目前我们都是基于函数和代码块进行编程的,这被称作面向过程的编程。在小型程序,我们可以使用过程编程,但在大型程序,我们就要使用面向对象编程。类就是面向对象编程的重点,他是一种把数据和功能结合起来...
  • 、Poplar:网页版自然语言标注工具、图片文字去除,可用于漫画翻译 、186种语言的数字法库、Amazon发布基于知识的人-人开放领域对话数据集 、中文文本纠错模块代码、繁简体转换 、 Python实现的多种文本可读性评价...
  • scikit-learn: Python 的机器学习 — scikit-learn 0.19.0 中文文档 - ApacheCN 问题构建 (Framing):机器学习主要术语 | 机器学习速成课程 | Google Developers 机器学习实战-ApacheCN-github MachineLearning100...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

python中什么叫代码块

python 订阅