python str字符串和byte字节流的区别 encode、decode方法的区别
Python 3最重要的新特性之一是對(duì)字符串和二進(jìn)制數(shù)據(jù)流做了明確的區(qū)分。文本總是Unicode,由str類型表示,二進(jìn)制數(shù)據(jù)則由bytes類型表示。Python 3不會(huì)以任意隱式的方式混用str和bytes,你不能拼接字符串和字節(jié)流,也無法在字節(jié)流里搜索字符串(反之亦然),也不能將字符串傳入?yún)?shù)為字節(jié)流的函數(shù)(反之亦然)。
編碼是什么?編碼就是把一個(gè)字符用一個(gè)二進(jìn)制來表示。
字符串類str里有一個(gè)encode()方法,它是從字符串向比特流的編碼過程。而bytes類型恰好有個(gè)decode()方法,它是從比特流向字符串解碼的過程。除此之外,我們查看Python源碼會(huì)發(fā)現(xiàn)bytes和str擁有幾乎一模一樣的方法列表,最大的區(qū)別就是encode和decode。
在將字符串存入磁盤和從磁盤讀取字符串的過程中,Python自動(dòng)地幫你完成了編碼和解碼的工作,你不需要關(guān)心它的過程。
使用bytes類型,實(shí)質(zhì)上是告訴Python,不需要它幫你自動(dòng)地完成編碼和解碼的工作,而是用戶自己手動(dòng)進(jìn)行,并指定編碼格式。
Python已經(jīng)嚴(yán)格區(qū)分了bytes和str兩種數(shù)據(jù)類型,你不能在需要bytes類型參數(shù)的時(shí)候使用str參數(shù),反之亦然。這點(diǎn)在讀寫磁盤文件時(shí)容易碰到。
在bytes和str的互相轉(zhuǎn)換過程中,實(shí)際就是編碼解碼的過程,必須顯式地指定編碼格式。
引用文章:淺析Python中bytes和str區(qū)別
總結(jié)
以上是生活随笔為你收集整理的python str字符串和byte字节流的区别 encode、decode方法的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 字符串前字母(无前缀,前
- 下一篇: python 网络编程 问题记录