每天十分钟Python学习--内置函数(2)

本节涉及函数包括
bytearray([source[, encoding[, errors]]])
bytes([source[, encoding[, errors]]])
chr(i), ord()
@classmethod

  • bytearray([source[, encoding[, errors]]]),返回一个新的字节数组,当传递的三个参数均为空时,返回长度为0的字节数组。
len(bytearray([])) #0

当source参数为字符串时,encoding参数也必须提供,函数将字符串使用str.encode方法转换成字节数组

bytearray('hello','utf-8') #bytearray(b'hello')
print(bytearray('你好','utf-8')) #bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')

当source参数为整数时,返回这个整数所指定长度的空字节数组,因此,source为整数时须大于0

bytearray(5) #bytearray(b'\x00\x00\x00\x00\x00')
bytearray(2) #bytearray(b'\x00\x00')

当source参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组里

bytearray([25,1,267]) #ValueError: byte must be in range(0, 256),而267超过范围
  • bytes([source[, encoding[, errors]]]):返回一个新的“bytes”对象, 是一个不可变序列,包含范围为 0 <= x < 256 的整数,bytes 是 bytearray 的不可变版本 -- 它有其中不改变序列的方法和相同的索引、切片操作。
    bytes 对象只负责以字节(二进制格式)序列来记录数据,由于 bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。
a=b'5'
print(a)
print(type(a))
# b'5'
# 

b=bytes(5)
print(b)
print(type(b))
# b'\x00\x00\x00\x00\x00'
# 

如果希望将一个字符串转换成 bytes 对象,有如下三种方式:

  1. 如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加b来构建字节串值。
b'python'
  1. 调用 bytes() 函数(其实是 bytes 的构造方法)将字符串按指定字符集转换成字节串,需要指定字符集。
bytes('python',encoding='utf-8')
  1. 调用字符串本身的 encode() 方法将字符串按指定字符集转换成字节串。
'pyhon'.encode('utf-8')

Python bytes类型及用法

  • chr(i):返回 Unicode 码位为整数 i (十进制或者十六进制)的字符的字符串格式,i 的取值从0 到 1,114,111(16 进制表示是 0x10FFFF),而ord()则由字符得到其Unicode码
str_a=chr(97)
code_a=ord('a')
  • @classmethod:把一个方法封装成类方法
    一个类方法把类自己作为第一个实参,就像一个实例方法把实例自己作为第一个实参
class C:
    @classmethod
    def f(cls, arg1, arg2, ...): ...

对类方法的调用可以在类上进行 (例如 C.f()) 也可以在实际上进行 (例如 C().f())

你可能感兴趣的:(每天十分钟Python学习--内置函数(2))