Tag: python3
-
python 如何记住运算优先级
PEMDAS 这个简称来辅助记忆,它的意思是“括号(Parentheses)、指数(Exponents)、乘(Multiplication)、除(Division)、加(Addition)、减(Subtraction)“,这也是 Python 里的运算优先级。一个常见的错误是人们以为 PEMDAS 是一个绝对次序,需要依次进行,其实乘除是一级,从左到右,然后加减是一级,从左到右,所以你可以把 PEMDAS 写成 PE (M&D) (A&S)。
-
Python 3中bytes与string的区别 文本总是用unicode进行编码以str类型表示而二进制数据以bytes类型表示
python 3中最重要的新特性可能就是将文本(text)和二进制数据做了更清晰的区分。文本总是用unicode进行编码,以str类型表示;而二进制数据以bytes类型表示。 在python3中,不能以任何隐式方式将str和bytes类型二者混合使用。不可以将str和bytes类型进行拼接,不能在str中搜索bytes数据(反之亦然),也不能将str作为参数传入需要bytes类型参数的函数(反之亦然)。 字符串和字节符之间划分界线是必然的。下面这个图解要牢记于心: strings可以被编码(encode)成字bytes,bytes也可以解码(decode)成strings: >>> ‘€20’.encode(‘utf-8′) b’\xe2\x82\xac20′ >>> b’\xe2\x82\xac20’.decode(‘utf-8’) ‘€20’ 可以这样理解: string是文本(text)的抽象表示。字符串(string)由字符组成,字符也是抽象的实体且与任何二进制表示无关。 当操纵字符串的时候,很多细节是不用了解的。我们可以分割、切片和拼接字符串,在字符串内部进行搜索。但并不在乎内部是如何表示的,也不用在意底层一个字符要花费多少byte。 只有在需要将string编码(encode)成byte的时候,比如:通过网络传输数据;或者需要将byte解码(decode)成string的时候,我们才会关注string和byte的区别。 传入encode和decode的参数是编码方式。编码是一种用二进制数据表示抽象字符的方式。目前有很多种编码。上面给出的UTF-8是其中一种,下面是另一种: >>> ‘€20’.encode(‘iso-8859-15′) b’\xa420′ >>> b’\xa420’.decode(‘iso-8859-15’) ‘€20′ 编码是这个转换过程中至关重要的一部分。若不编码,bytes对象b’\xa420’只是一堆比特位而已。编码赋予其含义。采用不同的编码,这堆比特位的含义就会大不同: >>> b’\xa420’.decode(‘windows-1255’) ‘₪20’ https://eli.thegreenplace.net/2012/01/30/the-bytesstr-dichotomy-in-python-3 相关阅读: https://moneyslow.com/mac%E4%B8%8Bpycharm%E5%BF%AB%E6%8D%B7%E9%94%AE%E5%A4%A7%E5%85%A8.html