资源描述:
《dive into python 3》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、CHAPTER-1.WHAT’SNEWIN“DIVEINTOPYTHON3”❝Isn’tthiswherewecamein?❞—PinkFloyd,TheWall-1.1.A.K.A.“THEMINUSLEVEL”AreyoualreadyaPythonprogrammer?Didyoureadtheoriginal“DiveIntoPython”?Didyoubuyitonpaper?(Ifso,thanks!)AreyoureadytotaketheplungeintoPython3?…Ifso,readon.(
2、Ifnoneofthatistrue,you’dbebetteroffstartingatthebeginning.)Python3comeswithascriptcalled2to3.Learnit.Loveit.Useit.PortingCodetoPython3with2to3isareferenceofallthethingsthatthe2to3toolcanfixautomatically.Sincealotofthosethingsaresyntaxchanges,it’sagoodstartingpo
3、inttolearnaboutalotofthesyntaxchangesinPython3.(printisnowafunction,`x`doesn’twork,&c.)CaseStudy:PortingchardettoPython3documentsmy(ultimatelysuccessful)efforttoportanon-triviallibraryfromPython2toPython3.Itmayhelpyou;itmaynot.There’safairlysteeplearningcurve,s
4、inceyouneedtokindofunderstandthelibraryfirst,soyoucanunderstandwhyitbrokeandhowIfixedit.Alotofthebreakagecentersaroundstrings.Speakingofwhich…Strings.Whew.Wheretostart.Python2had“strings”and“Unicodestrings.”Python3has“bytes”and“strings.”Thatis,allstringsarenowU
5、nicodestrings,andifyouwanttodealwithabagofbytes,youusethenewbytestype.Python3willneverimplicitlyconvertbetweenstringsandbytes,soifyou’renotsurewhichoneyouhaveatanygivenmoment,yourcodewillalmostcertainlybreak.ReadtheStringschapterformoredetails.Bytesvs.stringsco
6、mesupagainandagainthroughoutthebook.1•InFiles,you’lllearnthedifferencebetweenreadingfilesin“binary”and“text”mode.Reading(andwriting!)filesintextmoderequiresanencodingparameter.Sometextfilemethodscountcharacters,butothermethodscountbytes.Ifyourcodeassumesthatone
7、character==onebyte,itwillbreakonmulti-bytecharacters.•InHTTPWebServices,thehttplib2modulefetchesheadersanddataoverHTTP.HTTPheadersarereturnedasstrings,buttheHTTPbodyisreturnedasbytes.•InSerializingPythonObjects,you’lllearnwhythepicklemoduleinPython3definesanewd
8、ataformatthatisbackwardlyincompatiblewithPython2.(Hint:it’sbecauseofbytesandstrings.)Also,Python3supportsserializingobjectstoandfromJSON,whichdoesn’tevenhaveabytestype.I’lls