From b0df909c284f32deb67a89cf54a80c9793bdec0d Mon Sep 17 00:00:00 2001 From: jackfrued Date: Sun, 12 Jul 2020 17:31:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E7=AC=AC22=E8=AF=BE?= =?UTF-8?q?=E5=88=B0=E7=AC=AC25=E8=AF=BE=E7=9A=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- res/file-open-mode.png | Bin 0 -> 52945 bytes res/json-in-console.png | Bin 0 -> 123716 bytes res/tel-start-number.png | Bin 0 -> 26538 bytes 第022课:Python标准库初探.md | 208 ++++++++++++++ 第023课:文件读写和异常处理.md | 269 ++++++++++++++++++ ...课:对象的序列化和反序列化.md | 206 ++++++++++++++ 第025课:正则表达式的应用.md | 165 +++++++++++ 7 files changed, 848 insertions(+) create mode 100644 res/file-open-mode.png create mode 100644 res/json-in-console.png create mode 100644 res/tel-start-number.png create mode 100644 第022课:Python标准库初探.md create mode 100644 第023课:文件读写和异常处理.md create mode 100644 第024课:对象的序列化和反序列化.md create mode 100644 第025课:正则表达式的应用.md diff --git a/res/file-open-mode.png b/res/file-open-mode.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6b927f573182cc8f902f845d05e94e1e6b6581 GIT binary patch literal 52945 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 Pp|2`yDdk=^z5jmz)B*$L literal 0 HcmV?d00001 diff --git a/res/json-in-console.png b/res/json-in-console.png new file mode 100644 index 0000000000000000000000000000000000000000..d31881e8824367e6a048dc7d6071e89549dca1fd GIT binary patch literal 123716 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
  • MAmFnh=Hm?jlgE2L}yeL=IWfwdDAg`4cBm-RaW z+YS@DKi{D8>eVYb-Ws2ssnU(-?~t&~*8A46TTMNFe}(1&gE%^y0mg@a5%}(E$7HQ1 zT4D-D8Ncf3ySWVnai4{__1u|p6B~f==okA;^UYCz8CnPk`}s>zc*7@ADLG>{lmL9!tYg^ zJ*_i=VUI*+)^S!d~DV0}Np_ zma$ARL~{UfYIJ_HVn5nMkzRUG^%eEVEW?WdaCcFaM&0jEI2l$#+l}XI%wrE{BxeYo zqwtF}MP!HKk>;5rd?2Uf!DUBU=mDH};sbB;?sngYNJGd_d;DS~bNM--WXW*g+uiW7 zT=$MLt9_61k8z+KKCrq!X?=ghjs}YNERZ~xEAeNoY1Bl=S3beu%vr9qa44^xI+tMaxuVe{jlv{Ne|bC*w+m!nVWDlX4U^KP(?d7s?n zwH#ER*cn2dn@^s{>MGyOzGX&wiRO>Yi5bJ=dGTen7qwi=b#8-k=It5~1@Vd4&imIC zW3VTWydl<;6_d^4TeS`;VvzU ziP+4))*+bQ`oU>5kZDw~ww0fe&=!E&UEBN_U9!<8eAerM+#N-TTW<^5;93fcgUQKKesmYnlyOc zad@eU&V)T%uQ5ZUtunga$=9I=68}&#mtU1*%k!X(a?SAxsj!$%`)JC$S5HiGR2Mhw z*NHmTz7lts9H`vpe2DaY1m~tcM=(;*}SlxbG!S;Rmb$%`~O3=Ic zl^eNZaR-GpHB+If4lZTu<#ykZ^8UkQIJ9oq^~KK{;7w@~52;=7f{$bcWcG_-+7*TM zQDt@Y6pn*yFVY+NPhqzj$r?YgD+7n+i5(Oj_E|W3$qO_F)(HH}rKY15*y7l`X=sakkXp*G}$jeYFu%Ywlpah||LCiF_8!(ctvWn`67 zFSw=P3MZ`AGLf0E(gN59l#wsg8UBC}JtOtIV8QtXvOFw)4(r2HdHPmO>uGIm?)Qs)iuj!ttr#v|aH`i&=}{ewqf@u}}!e z5p9l~rgey1+6XxvsGY@(wVK>(wdxizkI3u|r2<18Fowmj93I(1l>kIbx7o8n3;BH+ z#}>*cuSmy|J|KX|JBzzY02?{{R(4P!N#Q1rOW1ifBXKi*gW?m~g-A?M7AbO9Ux;)6 zg>2$_QvQ2~9G$f|s~RRQN=G*uX5i@qgN~B96@7jwB+~NnSHFQHj8eSbO3onu`y~mR zW4|cPXa3f7c9CkOnkHwI*1vc{>RW+yHu@W-_Y61Xbg$3dF{Kz&u*;&?bPhH5FL^$g z@y5H`V&z;Jzx}qXK4XDDE#U(^_JQJYr&!a;m@Eu__`wElYU{3SWbSRDqQUDHG~j6t zfPnNe!zmEiS#-a5F%8VJ53#m%nU02n-AYG$6l1B0)2fN!e(7TBMeSa$cOuwyq>3#J z)Q38~?p^^V_@!?;nlEb%0MOxTw&Ss+f?3a=$`?YWOnMZDk=}AsJr0P9=MFfBHM$*t zuRtsRrL-{e+wgYz8>LJbAsZ6nbAu&LG^c~2&NJM^i6eXiPG2HS#L`-;S!F(!!|^YO z8wS42x2jspX>fYI4%qQY ze5rVDad2t2VI!#-MtrnuxrGPr^%Th8y$)(3{tAaffu}|XSwlXo`=f-NE1slV|iA6a5Sr9Yj#3`Wmef`ONzc`)JIoZaz`{$%5SRo(n z_R+A7IuMES@GmkO-pow_a^N1EHpc)y>Dd335uAZqyVzi`-%>WsjDE8E%`v#$9h({x z^-qB$kkA97RXbx)kxMiIl5f})F=;!_y%F(S%4N#@($?yef$z|2!+?U{_0e8TEx#63 z!6)me9pvX0DeZYb70_ydiszcr5Otw4heXjtInDZu1S?5vR~F&x-D=Zw>Z2fhWjp>% z7G7}uyXQq83uEx?0dzE7GV0_gu!q>$$$I1QP%NO5M9<)K3q;>X0H~MZU^`W!VUq+T zHnrTAgg2vII$KF%jcVjGI94q;N3xX?9~94iu zT#{d+SDOtx4ciHs}!<(;dh()|Tm3TYxn^z+Q{m1J61c1}~iS~Y)lR?O$v3N&p zCR#c1UUg89PW3Gv4>j7HWQ-uMo01toaT(CFl3`6&etDq!4VxT^A{glX!ep6gFUHZ$ z7Wm>i&SW^1er8++?U`~K)no>6y%{r&BEir6xhj6w?UAUC<8Rtb_8S`4n) zq<{;Y6_C5O6*pu9iTyx775H@oh}!u|M?V+$!2EFz0L3s@>S18+z`-}K;CTHo*SZ%V z!~CU5L5qok;9r_(bK6d#d!w|O1)Z7`-yTok#yqCzIhg38L^%orj{fqT(&vV=$Q}!k zDBbI97H(fpY+H}EhUGLE$ntIH?-oiblL>941H{AxNXIcDBT-efL0qrT_F|%=4TLnQ zKXtW#D%Z6}@qX8+jrRK@tm`3~qdhQ8>1T%wq($a^Z{G;I2%jkoKE-&Crl$W*mPziC zi73507!`vTjSDw?DbyMj^SOSquOEDAkZkZQ$Q;tdhLV9uiFW^7szg48_iP(s*eHtA z)2i(fZQnNVrNPY{!s^=BzejQOsgK@R$zD7*JeJBVK%?RoYjQsw&@0&q%(pRUbV}sV zvq5S_CwPG-#1huA6dm%T=OV0DtVeh`5FcH8cPv*Hi}Kl{;rSI@%MUL0_EndbV>wR< zjZ9}K1Gh8(0IxofcPT)U9UnG?|A!g+_i`XmtUyP2lA9fGMfV5i`5&eT88VP=Qy`-z zL8Sh0lG%s-!QiHS<-jA=#^_(yRs5FVh3C-@9Mc=eoTO_a0V z2G!Tx$E)c^BcftU-QV3lK;U+Tv>&qoJ+}tAWNzlqPWcLHYke%`m@+Jb7{m@f(IW5f zB$OlGe9{y-758&CIaL|%DVwd%T|TAFv53T{VK=%5?Zup4@5eMOsrCL4(X+s&pfg9j zl5D&kjX4~-yM6W314p_@RYf!0TP{Y>ne`CTyt{C1a^4p|c5`=~V;I}jyr<(j=oC}! zQeNW)2w|0c?B!EreVPwcKUTXVab6S|bbNg%CZXoq`Tgy-sRRJb_2(+V^gK|z1ZX@{ zGFQnu_WI}EDrzvJ9jRE|L%eZ&?6n?_do3z^shnA6dAeG=$$GdRD@MlsnQcrhz3fUa zW5Ql|UJ0O7tjB9J&(sT02g7QCH!c<^aY=9qp44)@=CEkP_n!s&$LN^Z*!t$|t8J4H(r0~uQ61znwX(cTw-ICm12Kri z#2fod%UkeVS(E**;m*#q^LeNHjLLc6ff3+P1}}q+{^@d#LdLT%$F`To*=xJAv`>KQ z({TwG>|`aCdB6>~3?^uH%X*!LLw8X;Q)6CVVlZv(?&80z0pYbuzxl*VW|u}MeqhJY z!N1S7F_;+e^VK`T!tS%EV=;zQf-@oYYE$|2oqAw3o>_H>Z3_Gq!3y>TpguGz0*M4w zmFXUj4v}cDBmmpk;cb+iM}m6IUa$AJC~}@+5pz|1d;$__5m4j3Z&n5CO!C`!`eTdZ zv9W4_=(`jn1`XVP^L^m&wK?M&Sc z7#PzBfI{>TvP0VlS_CIxf~D1+Ye|WAL)8NylJ^@ZAgvb~c97ckB}5{&+iVUq${ZQA z@xl&wwE)2*2A^Y}g?*NpqR;X9BM5ZjtFWS9o3H&}v$oB4`_I4$Sad1{DrG`Nb9fVe zFcFY&N2w|bn;>bmRP|4n(gIB&v1LeNns-SVFW3n8* ze2Yk~D5^cke|;!aegy!XGMq$Xm+y7`ex@ARWf030FF<{m*i!2MIFYHf^h@BZwyHBm zYN>iym}^kRQM>`D(FR$q0DUX0KpHn(P0`LacE5jrr-*B)4^VmBjy}Hy(5!G&j?P6u zil9gx7)BNsS8-iv&DL{L&#Wh_;OyKZUrl(&9(M2kEyq#dy{6DfdDLYEO`-E%#m?;~ z3Moat-gWG-0dKeV+`WrC50}&VyMX!2&b2=Km3F<{)fC$vzX3VgBYJ`Kq$dO{J-g#W zFE7EvKQ=ZtzyCORbl`e6Hw6G#(uGYPPZ|?CGz@e5l=G~zZ4=~4@2{u_4=K7S<@R+x5Vr09-L(k= z4&qAmP<9R|7EhFFP1~wwjf2Xi62D{l!AlYEy}mjMwdiE^f6wu?C+L$YkM^toVa{eL zUiIX-GrAQR|D%mZxKMVGFgT2hkOg4P%8Of5x}%3V*8s)exEa6t884vjZ4M7a|NWeS z-Au6?imhvhYrPB$yO9jN43e%mmw%(*FF?_I7_3v|Z#_HVA4D>H^r5x-_3W0RE=aQo zdeYfJ0YO6+3;W)hO=|OsqA<(;-OLF--`-8yf`?j> z4uzm$IsBe$TC#Eg%msiY~jO8OAJ&OSC(R2Dl;8PNR z0>&^iV%x_TBnQ9l{AJ>F?`fW1#lCC42iZwILlCxKJ@og zO0HG>?=wEdAi4jodj5M2nCu^ldE(v&OJd{e_zPi)y6%NgEbjKfV`HtWQ~Ne5qY5Vn z-uj(Hc@5@um6-W;61E~)n1UO`D8GDx+0u-^QX!2qa4uu=y*>8E4|{;PrRiKEmk0#3 zxqC|q$`CKA8h^sz$Ai3VXq}=H+;TgVYHBf-s2+y1JA*gW`C)LyVv})OE#okJ5fD(t zQ@G?orY0-m?O{Qun&{ZiVC7BWh0iK2jY7skCLsWjJ)2mmXi+O08?jj%i(W`@^fC8| zR-#p6yhuq5)-j*-dQIQh!Nt{BqawZzxifflcGx6Vt!JnfB3B;*P$c>7+*NY7q{Hb; zO-?JI3eJX-G$0mCgxd#@-2i>X{NPKFsvQzxr!$rr5IJBrT-C2eaBaS5r?qlGQ9(BY zO4IRk3NAjbQRQrFnbOPK{9{w4ZfE>lBWm@xGWW}j)dIKOg?X~x^^NL@8=knz<+HUM zji0Odz*}8HhHRh61S%Gp9U@6Br*t?Jfyzn#u3X8zm}&_U5TKSsenCrnB? zv7&oO{zW@$tpR@X+T1>SqJ_M}n;R-`1u)ls>&xekB|zEoY(wn$A?2%X@wP@9$t3tj zG~{jrjMb|{*Q_<0)~yS_rMQgEe6zqi9LQX*XFV;>C@BA=SA^xV<6E~Hbty- zt#u(lY)cFyqT*(2Pp{A4g$RWnib2%kmCn6A+Nyw_>~qkDYVs>odsqOo43U~gHz7XW zr2T2;&GuwRSZ{QV*syHcS11Z66ZOp7rC+{gr`w!1_OEr->ozWlv^lw38V};ajYW$> z@s;*__{c4f(2A-W>ysHdXTS&yItVWKg}YskFon8#0lX$8w&Nlq5VnZk6y6 zzknm7YC`2)OSRQp(vN6FGRTkdL90;?@2X1{2of7))fbnp@Q$u)X^{}Cx2Wvo@165| z9eNt_aNG>f6Qo&5UlEpTz5D}rEA)Z(gs`-@?^u2dAd&LlM}Uw|+Tt--$fapTy?2h} zIj(v2YAJZF-`9m6X)dR4eg4zrevHrje2C9wJ6hI3QR(IyhZ^;Vslf%R1BEwn_%~I0 z)lSKo*fV##w@3Z=g!N8A$zsiw0bLL~XRT9910kJr0sq~`I&YpWO4vct>SHbD95jKg zp>p}dZr%A&JTn!tWtZHNTeqfJ=dK^K_FXMkNUAvd1_YKYlLd6$nAW!StjYE22Sh{O z#P`K4Q&Scx4D#-L3EP9p^bRTstEG^+iImmlr)7=V>OkL#eH{sTXSaN?JxV}C8!Z{3 z^t_4d47)n+Yn-KZEnpDHE9#XClqaJRiEbaXihUvz-bJVr_F=;p*ks=$i*v1+dtO^B zSK9qlnw592;*uiU)i?dR1N9a~mD>#uiS&EAFdDk4x>b z;NE!Bcg4gA{(*0}ctzUbij`Uk`H}x>h~Ud<{5t5t z(9zXW-S@hKM4t>+HE&MVIxI1sFzu^0r8@X(`OXVloulT5qWH%56hMs7H{#n9$hE>m;ng_hQ}OSu+BuP>H4)-`n=F0k##WqlQ!;=KcF#8?L5@Mm6z zS%4kP%3QdSCfa9EDLt2L;Nf;VWfi8oSG&&Y8ll#pN&KI=fHGyu75whLT%E*N zuOvm)_PaA3GlE_yNQIRxdK(ED7pHl~;90v2rP7B>F1(0`))HX8{iI$zksWk$L%Zas zo2Ly&rHS)spPyZ+*V>%jY@gEjv4`P7@hlIJFSAMGmgc?NFa4sCt*f^BohxT$*{{8C zx^xxdHPn2|5W)88Yu_p)EB41nNCKp&CJoi5ga2=2L&?_w`WYnD>X8P|1M2@EU`(GH zyR*@C>^I(s~D+SNjEiK!xl2bC>RA< zg1FS@ujh)0IM zzuPcgSlf(6xNWi(y0;%vPhXeLoT;|{Y}`l+7|c}K>29J1ln8ViR|*zEQY>1vMH;F< z_lc|a!Z?tv#h(XG==xn09}h!BUlFl8cD#}kWH?8}ghrcVdn^=!nH0Oh2C?8@a>a*pSV2*Pb*t+ zN?Q`M8XI4r{5kRXt}5IUv^ptxt>~3&59J+O4_m6>w8=v=lNoozU1sMb{VR$Q=Z@eO zAEn$P`>Pr;ERE>*|5UeW%om%zqIt8gdHiru4-2@xRKZ$SSKB)88{gz`65vQ`%~U%? zrkEXPmjax_4x7_?A%R$BJ`FQ^=u<0BsUMov!twygpZ5*3=k(F`kf`-RwnRY)W%>_> z2Oh>`@>(dBjhKPy1OM{6gnj?;yIzsR{$liG5W>w#6i@pxxi^@+-P*Obv1y`(MJ z5*gulo(m(I_FfI1_&+2k6k7xw$8lAtW zeZ{jHCu?hhXK*;FB|4$t2kL80hOlVg_p!{Md^Y<6Z|}>^m4Gn+yZ!sW@S->bz@`~_ zMuomRD4KdL!1*d!XQA?yT7?deQ}_}`s)^0X`G{Ou8XuC_EP6x!Vw;x&(QXIG(yOe_ z+g@kC=3ijr`as&<; zbr8PVbI{sQOT$89Y5GlFrl24yIoD^JJ5)TuEYG0eW7^d_YiM>~$?)^AE5o;ExUS{|)ndAXy-vKV~fwjr}b9f%iO z!*;POd6qMn^~y0sBOa(O3>Ydhp>-=?^*#%dWP3 z=iXYr69f3)%Ah@sCd~uX03r^c!+B5F`-8FvO1q3W_|zYRBl@IJg?7;9Xioz&CD%V4 z7O9_dxnt|+o_cIBD*_*^vktduj`p{1j{CcJl)?U&K_y&IgAXASJC;OEqFAR#{lKju z>kleYAXBgHdP6FMzsa$Xpv+jebGCr#1BjGN3U=`RG~FTbe>{c_7i3EDh8lKiVpgC; z6CtK~-CukpzUU-2=x6GS$0FUZhgF%#cB;~TJpv||QvGPZI^U;slEOyow7??a9??+1 z5Y@jeHVQ8Y^~>DWcJ>7XL(Gqc+>zg+fo&PT2dVSLPF%EER4-1u6m>dhk;F$|t*0*-{pNWtU=QO|9m2wPKKF zY3LN}Q)$7oLNsK&`43`*8kjw%Gf!j@o;;cDIT9QWbbvSYHc>Zd*Gpdv>=3|H`MDf6 z8ab}IJJynNn$y1puJ6D3xZ^TT4&FndOUmH#@d7tGPLXCqtm`~g8dOH7#qaOVTj;NQ z%HLXs`aR4tycuNM*&&AS0c2LfLBV2Xo~o*6$_8i3D{Y$*F}`L$g7Uqp^PawH}fA&kJ+$iP{VVCh_L)PewSK;FkmA zPhqvPlal1)r`?o3ti;5`Lu6`tUbQs>y~jnSUMH2(Az6aOmRAwvHM9h`3hzoi$Ikp5 zRQI9N{9%OBZC&Bn_e>+}_Y4}}j@<6qkoNSFJw}kMVE4ka#|I&g5YVW6|MNr12N`YV z>JavuTK=bGWCGW)(D)k0sZl5jSB^QdgoTKE<3Q>Y|i{%&{x6s7SRljV%*TS(t ztK?4#T+_`0o#QrvEvJx8=3S8?&3z-|!9fAD6ycDn%l=Xxml}BUVHatYo5Q-_$GOV{ zEgSx_$68+RAE)S*&^=C_DY z;J4$JKmkNeMDCfhj?;Kl&8_kbOZ32^+}rZ5{^r^H*mojju_q~AQj2x>d*?PYRgIpE z>czvoii+p1+LMmx?m8&}eL@U{zkbQ>eBr^Gn_Djdl2N# zyz*B+bA&}Co^mvG?u>+Xd^6brrfYbR!@<>E`lZfAueC2p(G3pE7Bvq9IK%&Y34z5t zm1%VmFVJPHzGHpwW8&E!_$1r!3CwMFMpjBaIQ9JC%W*PEjhD|nYcI@h#BDG12%TlU zRX0gw%fZd$B1Pf4@*_=lhsj7O;=r>M;ohkAdrfl*iWg=Rjwl(zH>%;|icJ<^&)XBj z-dVV&nYmq|m3GuJl4Y#o8|;=M?bV_PZ-?I_S$VN2Mu}RehLay1Q7h5}#Eyp;7#U^3 z1U1E10G?}7CadRAs@Jk0oxd~;*Va2um)rY>Ll#BpZI|}U)Qb1gLU6&Qe0mzE@-8d? ze5YJSygwo4{1#n<3;t8iRTK&$nKDQr+{{J1eZS6+Oas-$U8Z9{Eh z^4&Q0XZUh2RA(aSN=-r;OK@zZUPN*xH|4Es89L?Et0I01?yOmuU6b03X2=42eoda+8x z@Wy|`Z;}$?_&k->T+J0FYTkv)!-MVoyv$uMpv7oIn~_9nq1iZ}pH&VAbNtaR{jfIG zqR_F92`*?`)KbhmF~2W4X-DphT6aCFrBfQMw@+RTe6mm1y;RszMp3EwiN&n6%d7>i zYCwe+$SOK6?pZl4%(}_BK;q}d@7i(dlO3~lsFnB@E=c$??wQT3=FhjI5#$?pVwQZz zU`W$`s8dGfZMjWseY2OmiiCNRu|nDlk=sRM2lDYI$cg(FWo;i`v751C(qVH6_~=Ei zPSu3K_g$f_!?nc{@+1)lpVY#{b%-+MXA)${Gc$P1SOBV59{=lu$+wW=OUycFgKnJP z`=ib!L|}Z+!YF@UboRk2^loy1)D0OHdqJ*R=Isn!+ROe3MMt zLAieNc;7U{=^%pwJ1;ZQe)BW5Rn6R0#Iob`CfUoS+Z9;7aOMkQL zG&*GggZ%#Mk%?xeqX&Le&rL52HOg>*_kQW1L>c#*q zy4$*8JYO*ppr|Bw3^6FAy3RYCfLnTiY5~jDs%}~R3cA~NVIO%YeD7}JG^(`7P5U;f z+e>b)MK_V~=X;rG0;};yIE1xO}TEpZ0~kkfH?9erlotTW?FR4d10CTZfStf8|*>s4_d66MjfYJj#|DQ%aD z8bv@rApMctrxwh+U+lN+v@?}dM*IHz>#R0SuYx-A_GEM#rCg{UMSRt}GV&$AAAHSv z>u^o1V1k>I*e981o>%*0NB+mR$+|AeXV=3XpF#u7N;5X;^2{PFjyumqejyRBj*aES zpPtjOPMumF07%x*ZdEC7kL){jxuyFo!>zI0p;*AcS=}uNV4c)I~0eY)n>jGBdI##U=6M?) zw+pjGw)`ezoWkp*nVwfVk~SbPwSZ@-m}!nmgO6_+kKRFH*U;FYf`rC&Wb;S7`}uRP`|vMu(ugk-+6-?dM_4Y+gTI#$#W9!% z7?8bMg4T1~EEvA$+>cI8no1D=?+g3L?<^x~7-!B2Y|26*q z^(k`{1GmEZM30jr_)q75gn%UhoZ#JMo;u?nE)Vz{z4F)|YAWr_=e0rHN`EG+&q?BiF+B7dYuywc8Di=2Hr2|9x}+wI19w zeo^Sf+}Y>LstWdgLM*-lK6jo!qf%2@fg!VY;u`}=v=R~$Pl<_{6SeI_#>?Udd|KG9 zg;Uo@H@rtrqeWzah$Wxd<zgDEEez_T8rvb%X8O>+{4i9f&)*BJCemMDzf8#(?x@ z-Z%(4f1RQ(ji%BZj7UG#3WD~BmrPbwXc68kujD>E3 z8?eK|;@Nz>+MV{LN+*Ze;|Mn+il*QTnQhai?-X2Yk2K1eSYmhGC}rL3qKAcn_Lca1 zfUv%Cw>w*%=DPl~S&>11M#Kmf}b4m+160HDtXe)1zk%<8*g`T1AD&+okw2F{(LpdsEz<7kA8~l7X8?%V(cC@ zk9Pw3izwU8+{u}5DStl;uxs>yUDI)o?H2F|Es)oo#^my{YBheEj=i+*^GnqdD{7LG z$+QZ0J=wNA`Km3Pc!;Xtyi-1%u6^b4$qFo~%5>nh1I(}!Egz;v?{a7eWLn)`u(QwQ zuRUj0lQI6V)&07dfj7<0ySy=;5&@Z%w=aT7F9yV?ZHoZT%h$J*&CXwh z&nt#nqT$zAk)*7&oHaAF1#0eHaloC znM$YBi1S;^`Gf?Y9jSE)q}%lKL5+u#y{h)RSwn(DUfv33j7uli+G_44!LgE(lCm2< z?u|8hxJb(u>$R-tIj*&q{T^aAP5PAt88G{Jea0XK*+|gJeeF;u?zGE9(mAMcQG4?R zb~*<1-xv=A&ECg*b$LGBsBpdv$!prJIX$WT5d4U#!TD*b!>a0U(?uL<{~eY5+tiSh z`6d=Q#`jhWJ-6h{J z-tWsc>{Tl~eM+)YQq?#yx8a_X69IBw))aJH)$EqJTX=VLt5qy7>H>_*Tlh-PQhXcqAm6`Q1dOA5nffp_V3O zrwI<4#X4ILW*K?qH?tWW+GRi1W@`c_Kp{`Bhm;Zy08zLsqP@hAHTmJe=#%exj*-P-PiKIuIqhooR1@Ma^|a2>2&c%;KWgYTNYykeV+DYI z=D`DLJ(at6J?>Y#&g)*gaf8hwu=kU&sn-5nc{+kRzyItutG%=ap@h#jDMS7AhfXJ54AruZ@1gp z<~WqZ3MhAf{iF*Mt`Q%RH_qEi`b+vG#snilGpLy&{je9163HmBLe3QH= zpmp8-q<6i^L*8w}bm>eR&ExW74RiNihX^=Co88F|aM}!dz&F(&@!GeMn6}S1tr)BjPtTXqgyu@Z2aULhrZsPJ$C#=p425dIkWW~`{QL~ zve-u~3USyGnq<6zk(lxBonkhU6KoST2U|Lu~4qq8qdmV&6m+pkhhg*4mL?@MZIU31d?GXWyzgCl!7zRxgt5ctbN<`-I!}0{%?fWW%1w2fx z=%uw}Rx?6V$845sgo>zfpbD}xQzdNCk(JwG*HU8EmgRcr*0S`2VY6~gZN-+MjewiN zc}3NRkM+FOR|~9dh>cw?Uyl?k`ryF^Q%)B#FnS>ljOVrp~@+qp^ zFj~Qt!>2YL`PvEfc1qSF+=Qq3LwloKD+|sse>>+$5Q04N9HujMYj@~!x&qy{zY!bh zY*Z{Sh0a+|lh@nyy=7Vv)AsEjuVTkbY5v{uFXY} zZ`*`hMyOVv@QsVpo9!)#({3){FgQ#ERj&j0A<(xZEY;$%;drK|OZ9vULQ4d?Wpt}b zuzz9+}XgR z7^P-AYW5wD&2hlP@gd>8d@$2OAwR1G;LsFcm2Ed^>!*9r%MPV98K5(&c}1Q-TJBD9m%3C&Nxg8{$o0E|r>Z5ZDF% z9TNG{u!gtum6jUZOjesog`D|;UcxCmb)li%>o>U*(@8s1w!j93$Jmkt_4xH;jErl& zwmNg&NA9(;nSS3aaymZr=Yvr>t7p$x0ls9%h5Nae^OE8Ah8k_D*JONL@u)FOo|o6H z8 zf9cws2eX6lna;??ox7YQwb)>d2 z&sb4$0z`k`#wWcA2tQ~tM1$h`OK|&zhe#KUe_eF&!yfM7D&70TfPHE80U?%KL@0Lm z!p`((0u3CVrCzM}d-Ab&|3u_QXg_QJ1*O@2^Gg!(WX;-Nl6oMBnIo%7R!B=Tt#Tr2 z24=(+wb_CmN#ZP#l&>8L+ZTmclN83d`%(4WJu&0Uakt>-)>9emac`^Du>|LOyHs3m zme79WqSqAj*fzOQu1&>#UP!AT7*`{|S{$OPX2jVhd00?Nd)6}4fp+&BNHb(`lA}5p;L77JAs(8D&lKLx(Y_;v%@0=@2C3?&2;vj}=!I>J9SPn=)hKyS@=p z^)H{|p`|l^Pq31Tj-O0m8etC&MJAPLRqRJ?3gE1=cJk zLfR1)gdTnm{}0UJ-w{Iv733+$=2rVcM6i;l`YVdRZ5J&tle2KymCe!QQG*2MEuGt+ zTI3wro?`i0YsFITbdNjPH()<#r_e<8r8}>kJ02Du)$yKhOHD`Z|Bm_}TW2>(IXXYt zI#!RsCRUC~^hBq#M<_Z49U|5g7=i+mb242&O#gw`l$J_|7<=B z+)p$A)bJx8{j2s{F!kgZ8XFrMT{APGn>TMtHtd7q51Zy7dRA7}OQ2r^Ra{)mzBA$~ z4)77sh76lwmv&6PtE!3_O7TAUSWW7eS#+&pqh}mE2NxKoK z5uYtdfc69q1^5haZ=$42t*L+R*w`2-a=P>k=w@zi3;%O%8vh{}{}RUZ0VbAR`*I71 zDbEs++d=)Rr;mD$R8z12;0<2ksaN;(tfsj1tKhc0L2LS&U_*Zez;HBR=?Hj4+IOQ@ zzSR&5#RVz}UU|PjQd#lBaSzx5-{Mv?kRSxO`!C^|1FoXL#;JxEBwY!s>t{6=uowZQ46X9>yb2hU6(gAnkN;w)0RdL-PJ%uGN7 z_BdeB(vHlFYayys;uROs&zs{k&2*FRO1_QpC6<0~iZeUTd^(om3Y5S!0b22+8k1a5 zty|pqd3~TE^n|93e;aitHXit@)2ujIRcs0tlUS>cmU&(=tJzgO=i37G4L(>VH@s_^!srtJ+ zHmHygx(f}Gy|cfQAc=_6*Ged0j5qh1&r*|by5H^#8k98mmoO~V(>56EPz& zzUSEP?k<~_cE!%Pq6!&@*x37P1Eldjkn4jTKhFGYX?Ce2dUz0XYXr&f4f0IfTTx!m zw(O}*{Zr=^V4@2$GBSU|ED=kCIsMO$k1kMKATP+eelT}a*eEUmoH^Y<9ZUlruIJc1 zLs!@ms4bY1pjH5ihOKa1tP6c>myY3^SoC=9=Dj zAfB5@O$nV}MgF_p-xoJ9R)Fk7K-3rX0wv-UfBgu)A1|5#HDbO`jPTxW;obw zHl(`?Fgxxyp{Kb4F*d9Va36ht!QuF0G-I~i^@>kNpG|D@7b#z;rV9dv*h}>}^KzJK z=`k^&=<8|b=+B}P)tX^zuWh!I@_K6ALJ?(~T3O{)J#>0*j78pKw-j5BW7nL#Ra65d^yy3(-A?HG0112V>@8FVTaZfjNL^eO*!HfJpJ>3Zi z7w_-XZxIkkCT|>m2T=N$5WI-O;`N0_vtPCd0OFabMY#fk&VIyuL4M|C-t}_%RjLxd-ZZmGy&{X5F66 zjIFhBbym_;2-iq$*}2PB8T|6i#{K@bCb!mr1mb*o&OZnUZ23pLibVW;s#sIQZyX$g z6q=ZDPDo;Ql2e08VeOJE1t4NX!R`N;o3pE}1$L|pG@UP-^(RRe8B*gw70&Q+jKcn} zwajZL7sZf^#%mL)d+xV9SD!@dUJ}Y*T}EvVNH8D)8r4G7HrsL^NNJ)FORAY}E#dPD z^k@gzPa-WE>lqXdQLaiSeiBqK%w3WEvi&+NtXI1c5dMrUk`Y&n#-=a!<6}E>DxyDx zbd8tcP>Zq)i1n)UJhfs&#t@Ydjn#mPzEOOhc{6Uw(0TL}#y<4r+_8D&6Sjh-RQ%4L zh}j(RK<-#exxok<28Rwpy>|+%y|q=wZR@pn6Q=L$f}aJET?ieF2AAOBpS5#BB_XC7ISNjc_(>_aax=qbGsjz& zR;w(1{^DXLV+?#if(b1X-^0~@NRo@?e&F?owU#1T&*W;QnhPx(;jXu1M))OO6^&cv zK^{r6IoMTg1*B$+ynLxZw%~-g1##I53=gI!%2msv6pF5noE_h&se(!|OeLVrpl|UK z51uATIoL0rd6`rIt$t30a5UV)mv8=3Q7K&hWQ3(-7Bv!H@^vT4l0`_lQ+bb^#!6e^ ztH?Q&%i2Agey)*l$K7QeJ$}1^J406wI#?iKc*|?3Afrw_a%2q92}HLH%G;g&&cE&B z<8j6)^}&`luOl^-Ia9UGb7J~J()lTc9@wt4)yL|b`O`kJFXOuc3h*OFjo1p@T5<;r zgLK%)Nb_!zQdFEkG;K~c2lwfkmfL+D!V4~K!|^!D$^wR<4V_|Z;iX#Ga^0FXaM3IA#3JZ~a|<(9P7imB>y@V;iY}rB(Y#ru15wte51wz`x~n7Z z`^cQ8f_xRf(eSvH36SC@bo%DOuly3u%8IRR-R11Rb>P@3rB~1pqGK?~b#?5GOP4+^ z=GGGnYuU|;4I4|xNsL*R7Bt*Dpu{RH}CTZPot6I)pE z^Zl*bYAj5Dt*gn&;grCMA@MxnZ?~l9ihevu5NqA0+_VwieP+W_)El-4YSj4*Xy2vz ztiD%#zOJ48*vb?(PFFYFfP?i zK(kcs?!F+~Cl4!fnY!0{N)FK!e@F~eAx$tu|z};f| zQO)Sb-?~nrx^v-(WZ3)UvF4B5nptkkcT3jrh5L5Vi~SwXvT>CPrkH-bU15?yyJmMG z!6nN+G(HaGh=At`EV-l0y#(=xu^Q>ACN@}Amyg#@`K^Rm#BTu;fl}OCiO8I1mT=zg zm7eIJaJVhOWdnixJ~Hc#a7Hc+eYBm;MSi){oa*uI_~8B<@jjLLa=HTN=n^ytO_TSo@O)5j@$expd5=8? zgWkEm8E8Xk-M_&7a=fk~RRwY|^h>AVHJto5*9Z%brQAp>QZ-3KX<`p%9`f7lxIM5= zx1>Uw8#<1}32Y!P?*d9m!gqqSZyR*1L_&{MRx+B`{iJK-bXlP?X4)zL`4WyXp}NTW zvqKJ)8aJbzmKz(Ce|vkO({8)z+pjh!Gfkr^*+UYpNJjyA9Wyzlfz0B=P{B<1oLW$sZ(G4%|D^J z^byLKR=_rN_cZHZCj5lNY<^Lu@-(FZy1D=ovLRajmP3$s&+85@PQ-j+y+n}RjuS+j zzHkLSJv|k7Ja&3x!~*r(Wz|s>R~jfHySd-%Ex}byp+KfkP2+?Q!*&`$(%w|FW@ow4 z!j;Y94#5D?XkY09(agyp^=5e&OHD6^Kkq`rk(Ksoycur$#He_z#tVXY#~3^>5DGEI zl{+M#+}W6yWI(w6cC#RJx`**ayd;i#!amFeaqKT~d^Uu4`1AD&gCg4MmmnbV1bit^ z*5?L>vxk4Dt8uBYFE)hKa4Si<%-oMIR62d3EEo+GsV&<=05xrHuPHi1WM6w7G|GiB z7?9SFfykDt8LJ%3@M>>szQB%W6Etwgd~FGZRN{ltl(tnnsu3gb|L?ZfX1f8+)b~Zq z#xM$bP&EMO4VdJR$FvD81S=eATqIN3RO^q(+RH|_TUzc0=VW|!JKceq9+uQeYTSxM z7n$-kXw}{QD`do`%EC8z<$mKi_V>z(El5DroLTEAx%_l(romm-+w|Ke3C9oMfExE@ z5fT=?hG|74&Ag{vVAfj?s>?L=^XC`tBcyfM5*InYf`{`00<70Ha%4`k& z+%Hp~>8p57+$XZkyDX`Gp&P=e*Q+&C3nC92k!B-5Qj+g+_!@e6RK3sICK&jZZ@A8V zR$k93v>7Y4v3;2>_Q3)8R(1hsDTqgX!4)wvU9a^yE5AB?&OeIsD6rFq)4&UU@T0PL zGQ#5L#@$|yq%z5oq7t?}G&%6TpVrVlM!4U2X7V@LMswFSyK8bf#^yAbC5DD)#^qiK z(zc(9d|kRKdm<(_M$`EHmg^Zwt(m=)p`oIZ@jS19#BAmBx17^|%}6)C6EUxmh#UDX ze+U#2aLjqmSm}HM-NDKHjl0}J2G%&8mfM7h(H_)Z6!(B9Ab<@_`jL*^?L$C4${0bs zAm@I5LGFmEDwZFh>-;Oaz7MV55LaxIiNs6>onJ(Sp^cF#Bx2toC6kA ziR4K8Uvv3SDI2Dz;VK?h(`Uxoio>4<4I{T3L&@N~bd$~e16(Ainic&E;7G=8Qi>+pR6YcV9mQXEjgCAvA##X1Y8 zL;OEL`~o`gM5C{Tvw&IMyY_W4zu>Imp(RcfWrtEyqN$+Gry`AheQ1kG+lb&ZCaz{3 zb;gIFJnuhUM=$xtgnLbnsu(uK9pcIU>lt+1DUV3p^H4qVnMP@-)n8dYXgefI{Xcqh z9~h$DN^8C&7M(>0=vC_JCt`;g81Pz?KX`u+ca!yqy+8JWiW(R2T=WrGF#$TvqRT^f+3mr75*f7EjSyaDvSKScE?l}t@ZdFW^h z+&Mz2{{j^`#754`2ho|oCma~S#8S+B^-47Fzn1$ykKEsay9ZGCjfwDgM@X@f5+z*} z6Ww{xYW{0M_QCsPr}leCY!6R5*k0PM&L>BVAMoGp|L^wy_w@h&pZ=fw9^b|+7_Nk$ QpaMVYD%y7oZ(9ca4~BV8h5!Hn literal 0 HcmV?d00001 diff --git a/res/tel-start-number.png b/res/tel-start-number.png new file mode 100644 index 0000000000000000000000000000000000000000..827522c8d019f69d348acf783536234b3571e6c2 GIT binary patch literal 26538 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 literal 0 HcmV?d00001 diff --git a/第022课:Python标准库初探.md b/第022课:Python标准库初探.md new file mode 100644 index 0000000..5398781 --- /dev/null +++ b/第022课:Python标准库初探.md @@ -0,0 +1,208 @@ +## 第022课:Python标准库初探 + +Python语言最可爱的地方在于它的标准库和三方库实在是太丰富了,日常开发工作中的很多任务都可以通过这些标准库或者三方库直接解决。下面我们先介绍Python标准库中的一些常用模块,后面的课程中再陆陆续续为大家介绍Python常用三方库的用途和用法。 + +### base64 - Base64编解码模块 + +**Base64**是一种基于64个可打印字符来表示二进制数据的方法。由于$log _{2}64=6$,所以Base64以6个比特(二进制位,可以表示0或1)为一个单元,每个单元对应一个可打印字符。对于3字节(24比特)的二进制数据,我们可以将其处理成对应于4个Base64单元,即3个字节可由4个可打印字符来表示。Base64编码可用来作为电子邮件的传输编码,也可以用于其他需要将二进制数据转成文本字符的场景,这使得在XML、JSON、YAML这些文本数据格式中传输二进制内容成为可能。在Base64中的可打印字符包括`A-Z`、`a-z`、`0-9`,这里一共是62个字符,另外两个可打印符号通常是`+`和`/`,`=`用于在Base64编码最后进行补位。 + +关于Base64编码的细节,大家可以参考[《Base64笔记》](http://www.ruanyifeng.com/blog/2008/06/base64.html)一文,Python标准库中的`base64`模块提供了`b64encode`和`b64decode`两个函数,专门用于实现Base64的编码和解码,下面演示了在**Python的交互式环境**中执行这两个函数的效果。 + +```Python +>>> import base64 +>>> +>>> content = 'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.' +>>> base64.b64encode(content.encode()) +b'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=' +>>> content = b'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=' +>>> base64.b64decode(content).decode() +'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.' +``` + +### collections - 容器数据类型模块 + +`collections`模块提供了诸多非常好用的数据结构,主要包括: + +- `namedtuple`:命令元组,它是一个类工厂,接受类型的名称和属性列表来创建一个类。 +- `deque`:双端队列,是列表的替代实现。Python中的列表底层是基于数组来实现的,而`deque`底层是双向链表,因此当你需要在头尾添加和删除元素是,`deque`会表现出更好的性能,渐近时间复杂度为$O(1)$。 +- `Counter`:`dict`的子类,键是元素,值是元素的计数,它的`most_common()`方法可以帮助我们获取出现频率最高的元素。`Counter`和`dict`的继承关系我认为是值得商榷的,按照CARP原则,`Counter`跟`dict`的关系应该设计为关联关系更为合理。 +- `OrderedDict`:`dict`的子类,它记录了键值对插入的顺序,看起来既有字典的行为,也有链表的行为。 +- `defaultdict`:类似于字典类型,但是可以通过默认的工厂函数来获得键对应的默认值,相比字典中的`setdefault()`方法,这种做法更加高效。 + +下面是在**Python交互式环境中**使用`namedtuple`创建扑克牌类的例子。 + +```Python +>>> from collections import namedtuple +>>> +>>> Card = namedtuple('Card', ('suite', 'face')) +>>> card1 = Card('红桃', 5) +>>> card2 = Card('草花', 9) +>>> card1 +Card(suite='红桃', face=5) +>>> card2 +Card(suite='草花', face=9) +>>> print(f'{card1.suite}{card1.face}') +红桃5 +>>> print(f'{card2.suite}{card2.face}') +草花9 +``` + +下面是使用`Counter`类统计列表中出现次数最多的三个元素的例子。 + +```Python +from collections import Counter + +words = [ + 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', + 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', + 'the', 'eyes', "don't", 'look', 'around', 'the', 'eyes', + 'look', 'into', 'my', 'eyes', "you're", 'under' +] +counter = Counter(words) +# 打印words列表中出现频率最高的3个元素及其出现次数 +for elem, count in counter.most_common(3): + print(elem, count) +``` + +### hashlib - 哈希函数模块 + +哈希函数又称哈希算法或散列函数,是一种为已有的数据创建“数字指纹”(哈希摘要)的方法。哈希函数把数据压缩成摘要,对于相同的输入,哈希函数可以生成相同的摘要(数字指纹),需要注意的是这个过程并不可逆(不能通过摘要计算出输入的内容)。一个优质的哈希函数能够为不同的输入生成不同的摘要,出现哈希冲突(不同的输入产生相同的摘要)的概率极低,[MD5](https://zh.wikipedia.org/wiki/MD5)、[SHA家族]([https://zh.wikipedia.org/wiki/SHA%E5%AE%B6%E6%97%8F](https://zh.wikipedia.org/wiki/SHA家族))就是这类好的哈希函数。 + +> **说明**:在2011年的时候,RFC 6151中已经禁止将MD5用作密钥散列消息认证码,这个问题不在我们讨论的范围内。 + +Python标准库的`hashlib`模块提供了对哈希函数的封装,通过使用`md5`、`sha1`、`sha256`等类,我们可以轻松的生成“数字指纹”。举一个简单的例子,用户注册时我们希望在数据库中保存用户的密码,很显然我们不能将用户密码直接保存在数据库中,这样可能会导致用户隐私的泄露,所以在数据库中保存用户密码时,通常都会将密码的“指纹”保存起来,用户登录时通过哈希函数计算密码的“指纹”再进行匹配来判断用户登录是否成功。 + +```Python +import hashlib + +# 计算字符串"123456"的MD5摘要 +print(hashlib.md5('123456'.encode()).hexdigest()) + +# 计算文件"Python-3.7.1.tar.xz"的MD5摘要 +hasher = hashlib.md5() +with open('Python-3.7.1.tar.xz', 'rb') as file: + data = file.read(512) + while data: + hasher.update(data) + data = file.read(512) +print(hasher.hexdigest()) +``` + +> **说明**:很多网站在下载链接的旁边都提供了哈希摘要,完成文件下载后,我们可以计算该文件的哈希摘要并检查它与网站上提供的哈希摘要是否一致(指纹比对)。如果计算出的哈希摘要与网站提供的并不一致,很有可能是下载出错或该文件在传输过程中已经被篡改,这时候就不应该直接使用这个文件。 + +### heapq - 堆排序模块 + +`heapq`模块实现了堆排序算法,如果希望使用堆排序,尤其是要解决**TopK问题**(从序列中找到K个最大或最小元素),直接使用该模块即可,代码如下所示。 + +```Python +import heapq + +list1 = [34, 25, 12, 99, 87, 63, 58, 78, 88, 92] +# 找出列表中最大的三个元素 +print(heapq.nlargest(3, list1)) +# 找出列表中最小的三个元素 +print(heapq.nsmallest(3, list1)) + +list2 = [ + {'name': 'IBM', 'shares': 100, 'price': 91.1}, + {'name': 'AAPL', 'shares': 50, 'price': 543.22}, + {'name': 'FB', 'shares': 200, 'price': 21.09}, + {'name': 'HPQ', 'shares': 35, 'price': 31.75}, + {'name': 'YHOO', 'shares': 45, 'price': 16.35}, + {'name': 'ACME', 'shares': 75, 'price': 115.65} +] +# 找出价格最高的三只股票 +print(heapq.nlargest(3, list2, key=lambda x: x['price'])) +# 找出持有数量最高的三只股票 +print(heapq.nlargest(3, list2, key=lambda x: x['shares'])) +``` + +### itertools - 迭代工具模块 + +`itertools`可以帮助我们生成各种各样的迭代器,大家可以看看下面的例子。 + +```Python +import itertools + +# 产生ABCD的全排列 +for value in itertools.permutations('ABCD'): + print(value) + +# 产生ABCDE的五选三组合 +for value in itertools.combinations('ABCDE', 3): + print(value) + +# 产生ABCD和123的笛卡尔积 +for value in itertools.product('ABCD', '123'): + print(value) + +# 产生ABC的无限循环序列 +it = itertools.cycle(('A', 'B', 'C')) +print(next(it)) +print(next(it)) +print(next(it)) +print(next(it)) +``` + +### random - 随机数和随机抽样模块 + +这个模块我们之前已经用过很多次了,生成随机数、实现随机乱序和随机抽样,下面是常用函数的列表。 + +- `getrandbits(k)`:返回具有`k`个随机比特位的整数。 +- `randrange(start, stop[, step])`:从`range(start, stop, step)` 返回一个随机选择的元素,但实际上并没有构建一个`range`对象。 +- `randint(a, b)`:返回随机整数`N`满足`a <= N <= b`,相当于`randrange(a, b+1)`。 +- `choice(seq)`:从非空序列`seq`返回一个随机元素。 如果`seq`为空,则引发`IndexError`。 +- `choices(population, weight=None, *, cum_weights=None, k=1)`:从`population`中选择替换,返回大小为`k`的元素列表。 如果`population`为空,则引发`IndexError`。 +- `shuffle(x[, random])`:将序列`x`随机打乱位置。 +- `sample(population, k)`:返回从总体序列或集合中选择`k`个不重复元素构造的列表,用于无重复的随机抽样。 +- `random()`:返回`[0.0, 1.0)`范围内的下一个随机浮点数。 +- `expovariate(lambd)`:指数分布。 +- `gammavariate(alpha, beta)`:伽玛分布。 +- `gauss(mu, sigma)` / `normalvariate(mu, sigma)`:正态分布。 +- `paretovariate(alpha)`:帕累托分布。 +- `weibullvariate(alpha, beta)`:威布尔分布。 + +### os.path - 路径操作相关模块 + +`os.path`模块封装了操作路径的工具函数,如果程序中需要对文件路径做拼接、拆分、获取以及获取文件的存在性和其他属性,这个模块将会非常有帮助,下面为大家罗列一些常用的函数。 + +- `dirname(path)`:返回路径`path`的目录名称。 +- `exists(path)`:如果`path`指向一个已存在的路径或已打开的文件描述符,返回 `True`。 +- `getatime(path)` / `getmtime(path)` / `getctime(path)`:返回`path`的最后访问时间/最后修改时间/创建时间。 +- `getsize(path)`:返回`path`的大小,以字节为单位。如果该文件不存在或不可访问,则抛出`OSError`异常。 +- `isfile(path)`:如果`path`是普通文件,则返回 `True`。 +- `isdir(path)`:如果`path`是目录(文件夹),则返回`True`。 +- `join(path, *paths)`:合理地拼接一个或多个路径部分。返回值是`path`和`paths`所有值的连接,每个非空部分后面都紧跟一个目录分隔符 (`os.sep`),除了最后一部分。这意味着如果最后一部分为空,则结果将以分隔符结尾。如果参数中某个部分是绝对路径,则绝对路径前的路径都将被丢弃,并从绝对路径部分开始连接。 +- `splitext(path)`:将路径`path`拆分为一对,即`(root, ext)`,使得`root + ext == path`,其中`ext`为空或以英文句点开头,且最多包含一个句点。 + +### uuid - UUID生成模块 + +`uuid`模块可以帮助我们生成全局唯一标识符(Universal Unique IDentity)。该模块提供了四个用于生成UUID的函数,分别是: + +- `uuid1()`:由MAC地址、当前时间戳、随机数生成,可以保证全球范围内的唯一性。 +- `uuid3(namespace, name)`:通过计算命名空间和名字的MD5哈希摘要(“指纹”)值得到,保证了同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,但同一命名空间的同一名字会生成相同的UUID。 +- `uuid4()`:由伪随机数生成UUID,有一定的重复概率,该概率可以计算出来。 +- `uuid5()`:算法与`uuid3`相同,只不过哈希函数用SHA-1取代了MD5。 + +由于`uuid4`存在概率型重复,那么在真正需要全局唯一标识符的地方最好不用使用它。在分布式环境下,`uuid1`是很好的选择,因为它能够保证生成ID的全局唯一性。下面是在**Python交互式环境中**使用`uuid1`函数生成全局唯一标识符的例子。 + +```Python +>>> import uuid +>>> uuid.uuid1().hex +'622a8334baab11eaaa9c60f81da8d840' +>>> uuid.uuid1().hex +'62b066debaab11eaaa9c60f81da8d840' +>>> uuid.uuid1().hex +'642c0db0baab11eaaa9c60f81da8d840' +``` + +### 简单的总结 + +Python标准库中有大量的模块,日常开发中有很多常见的任务在Python标准库中都有封装好的函数或类可供使用,这也是Python这门语言最可爱的地方。 + +>**温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。 +> +>付费群:**789050736**,群一直保留,供大家学习交流讨论问题。 +> +>免费群:**151669801**,仅供入门新手提问,定期清理群成员。 + diff --git a/第023课:文件读写和异常处理.md b/第023课:文件读写和异常处理.md new file mode 100644 index 0000000..0be06c8 --- /dev/null +++ b/第023课:文件读写和异常处理.md @@ -0,0 +1,269 @@ +## 第023课:文件读写和异常处理 + +实际开发中常常会遇到对数据进行持久化的场景,所谓持久化是指将数据从无法长久保存数据的存储介质(通常是内存)转移到可以长久保存数据的存储介质(通常是硬盘)中。实现数据持久化最直接简单的方式就是通过**文件系统**将数据保存到**文件**中。 + +计算机的**文件系统**是一种存储和组织计算机数据的方法,它使得对数据的访问和查找变得容易,文件系统使用**文件**和**树形目录**的抽象逻辑概念代替了硬盘、光盘、闪存等物理设备的数据块概念,用户使用文件系统来保存数据时,不必关心数据实际保存在硬盘的哪个数据块上,只需要记住这个文件的路径和文件名。在写入新数据之前,用户不必关心硬盘上的哪个数据块没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。 + +### 打开和关闭文件 + +有了文件系统,我们可以非常方便的通过文件来读写数据;在Python中要实现文件操作是非常简单的。我们可以使用Python内置的`open`函数来打开文件,在使用`open`函数时,我们可以通过函数的参数指定**文件名**、**操作模式**和**字符编码**等信息,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件或二进制文件)以及做什么样的操作(读、写或追加),具体如下表所示。 + +| 操作模式 | 具体含义 | +| -------- | -------------------------------- | +| `'r'` | 读取 (默认) | +| `'w'` | 写入(会先截断之前的内容) | +| `'x'` | 写入,如果文件已经存在会产生异常 | +| `'a'` | 追加,将内容写入到已有文件的末尾 | +| `'b'` | 二进制模式 | +| `'t'` | 文本模式(默认) | +| `'+'` | 更新(既可以读又可以写) | + +下图展示了如何根据程序的需要来设置`open`函数的操作模式。 + +![](./res/file-open-mode.png) + +在使用`open`函数时,如果打开的文件是字符文件(文本文件),可以通过`encoding`参数来指定读写文件使用的字符编码。如果对字符编码和字符集这些概念不了解,可以看看[《字符集和字符编码》](https://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html)一文,此处不再进行赘述。如果没有指定该参数,则使用系统默认的编码作为读写文件的编码。当前系统默认的编码可以通过下面的代码获得。 + +```Python +import sys + +print(sys.getdefaultencoding()) +``` + +使用`open`函数打开文件成功后会返回一个文件对象,通过这个对象,我们就可以实现对文件的读写操作;如果打开文件失败,`open`函数会引发异常,稍后会对此加以说明。如果要关闭打开的文件,可以使用文件对象的`close`方法,这样可以在结束文件操作时释放掉这个文件。 + +### 读写文本文件 + +用`open`函数打开文本文件时,需要指定文件名并将文件的操作模式设置为`'r'`,如果不指定,默认值也是`'r'`;如果需要指定字符编码,可以传入`encoding`参数,如果不指定,默认值是None,那么在读取文件时使用的是操作系统默认的编码。需要提醒大家,如果不能保证保存文件时使用的编码方式与`encoding`参数指定的编码方式是一致的,那么就可能因无法解码字符而导致读取文件失败。 + +下面的例子演示了如何读取一个纯文本文件(一般指只有字符原生编码构成的文件,与富文本相比,纯文本不包含字符样式的控制元素,能够被最简单的文本编辑器直接读取)。 + +```Python +file = open('致橡树.txt', 'r', encoding='utf-8') +print(file.read()) +file.close() +``` + +> **说明**:[《致橡树》](http://www.china.org.cn/learning_english/2011-02/21/content_21967654.htm)是舒婷老师在1977年3月创建的爱情诗,也是我最喜欢的现代诗之一。 + +除了使用文件对象的`read`方法读取文件之外,还可以使用`for-in`循环逐行读取或者用`readlines`方法将文件按行读取到一个列表容器中,代码如下所示。 + +```Python +import time + +file = open('致橡树.txt', 'r', encoding='utf-8') +for line in file: + print(line, end='') + time.sleep(0.5) +file.close() + +file = open('致橡树.txt', 'r', encoding='utf-8') +lines = file.readlines() +for line in lines: + print(line, end='') + time.sleep(0.5) +file.close() +``` + +如果要向文件中写入内容,可以在打开文件时使用`w`或者`a`作为操作模式,前者会截断之前的文本内容写入新的内容,后者是在原来内容的尾部追加新的内容。 + +```Python +file = open('致橡树.txt', 'a', encoding='utf-8') +file.write('\n标题:《致橡树》') +file.write('\n作者:舒婷') +file.write('\n时间:1977年3月') +file.close() +``` + +也可以使用下面的代码来完成相同的操作。 + +```Python +lines = ['标题:《致橡树》', '作者:舒婷', '时间:1977年3月'] +file = open('致橡树.txt', 'a', encoding='utf-8') +for line in lines: + file.write(f'\n{line}') +file.close() +``` + +### 异常处理机制 + +请注意上面的代码,如果`open`函数指定的文件并不存在或者无法打开,那么将引发异常状况导致程序崩溃。为了让代码具有健壮性和容错性,我们可以**使用Python的异常机制对可能在运行时发生状况的代码进行适当的处理**。Python中和异常相关的关键字有五个,分别是`try`、`except`、`else`、`finally`和`raise`,我们先看看下面的代码,再来为大家介绍这些关键字的用法。 + +```Python +file = None +try: + file = open('致橡树.txt', 'r', encoding='utf-8') + print(file.read()) +except FileNotFoundError: + print('无法打开指定的文件!') +except LookupError: + print('指定了未知的编码!') +except UnicodeDecodeError: + print('读取文件时解码错误!') +finally: + if file: + file.close() +``` + +在Python中,我们可以将运行时会出现状况的代码放在`try`代码块中,在`try`后面可以跟上一个或多个`except`块来捕获异常并进行相应的处理。例如,在上面的代码中,文件找不到会引发`FileNotFoundError`,指定了未知的编码会引发`LookupError`,而如果读取文件时无法按指定编码方式解码文件会引发`UnicodeDecodeError`,所以我们在`try`后面跟上了三个`except`分别处理这三种不同的异常状况。在`except`后面,我们还可以加上`else`代码块,这是`try` 中的代码没有出现异常时会执行的代码,而且`else`中的代码不会再进行异常捕获,也就是说如果遇到异常状况,程序会因异常而终止并报告异常信息。最后我们使用`finally`代码块来关闭打开的文件,释放掉程序中获取的外部资源。由于`finally`块的代码不论程序正常还是异常都会执行,甚至是调用了`sys`模块的`exit`函数终止Python程序,`finally`块中的代码仍然会被执行(因为`exit`函数的本质是引发了`SystemExit`异常),因此我们把`finally`代码块称为“总是执行代码块”,它最适合用来做释放外部资源的操作。 + +Python中内置了大量的异常类型,除了上面代码中用到的异常类型以及之前的课程中遇到过的异常类型外,还有许多的异常类型,其继承结构如下所示。 + +``` +BaseException + +-- SystemExit + +-- KeyboardInterrupt + +-- GeneratorExit + +-- Exception + +-- StopIteration + +-- StopAsyncIteration + +-- ArithmeticError + | +-- FloatingPointError + | +-- OverflowError + | +-- ZeroDivisionError + +-- AssertionError + +-- AttributeError + +-- BufferError + +-- EOFError + +-- ImportError + | +-- ModuleNotFoundError + +-- LookupError + | +-- IndexError + | +-- KeyError + +-- MemoryError + +-- NameError + | +-- UnboundLocalError + +-- OSError + | +-- BlockingIOError + | +-- ChildProcessError + | +-- ConnectionError + | | +-- BrokenPipeError + | | +-- ConnectionAbortedError + | | +-- ConnectionRefusedError + | | +-- ConnectionResetError + | +-- FileExistsError + | +-- FileNotFoundError + | +-- InterruptedError + | +-- IsADirectoryError + | +-- NotADirectoryError + | +-- PermissionError + | +-- ProcessLookupError + | +-- TimeoutError + +-- ReferenceError + +-- RuntimeError + | +-- NotImplementedError + | +-- RecursionError + +-- SyntaxError + | +-- IndentationError + | +-- TabError + +-- SystemError + +-- TypeError + +-- ValueError + | +-- UnicodeError + | +-- UnicodeDecodeError + | +-- UnicodeEncodeError + | +-- UnicodeTranslateError + +-- Warning + +-- DeprecationWarning + +-- PendingDeprecationWarning + +-- RuntimeWarning + +-- SyntaxWarning + +-- UserWarning + +-- FutureWarning + +-- ImportWarning + +-- UnicodeWarning + +-- BytesWarning + +-- ResourceWarning +``` + +从上面的继承结构可以看出,Python中所有的异常都是`BaseException`的子类型,它有四个直接的子类,分别是:`SystemExit`、`KeyboardInterrupt`、`GeneratorExit`和`Exception`。其中,`SystemExit`表示解释器请求退出,`KeyboardInterrupt`是用户中断程序执行(按下`Ctrl+c`),`GeneratorExit`表示生成器发生异常通知退出。值得一提的是`Exception`类,它是常规异常类型的父类型,很多的异常都是直接或间接的继承自`Exception`类。如果Python内置的异常类型不能满足应用程序的需要,我们可以自定义异常类型,而自定义的异常类型也应该直接或间接继承自`Exception`类,当然还可以根据需要重写或添加方法。 + +在Python中,可以使用`raise`关键字来引发异常(抛出异常对象),而调用者可以通过`try...except...`结构来捕获并处理异常。例如在函数中,当函数的执行条件不满足时,可以使用抛出异常的方式来告知调用者问题的所在,而调用者可以通过捕获处理异常来使得代码从异常中恢复,定义异常和抛出异常的代码如下所示。 + +```Python +class InputError(ValueError): + """自定义异常类型""" + pass + + +def fac(num): + """求阶乘""" + if type(num) != int or num < 0: + raise InputError('只能计算非负整数的阶乘!!!') + if num in (0, 1): + return 1 + return num * fac(num - 1) +``` + +调用求阶乘的函数`fac`,通过`try...except...`结构捕获输入错误的异常并打印异常对象(显示异常信息),如果输入正确就计算阶乘并结束程序。 + +```Python +flag = True +while flag: + num = int(input('n = ')) + try: + print(f'{num}! = {fac(num)}') + flag = False + except InputError as err: + print(err) +``` + +### 上下文语法 + +对于`open`函数返回的文件对象,还可以使用`with`上下文语法在文件操作完成后自动执行文件对象的`close`方法,这样可以让代码变得更加简单,因为不需要再写`finally`代码块来执行关闭文件释放资源的操作。需要提醒大家的是,并不是所有的对象都可以放在`with`上下文语法中,只有符合**上下文管理器协议**(有`__enter__`和`__exit__`魔术方法)的对象才能使用这种语法,Python标准库中的`contextlib`模块也提供了对`with`上下文语法的支持,后面再为大家进行讲解。 + +```Python +try: + with open('致橡树.txt', 'r', encoding='utf-8') as file: + print(file.read()) +except FileNotFoundError: + print('无法打开指定的文件!') +except LookupError: + print('指定了未知的编码!') +except UnicodeDecodeError: + print('读取文件时解码错误!') +``` + +### 读写二进制文件 + +读写二进制文件跟读写文本文件的操作类似,但是需要注意,在使用`open`函数打开文件时,如果要进行读操作,操作模式是`'rb'`,如果要进行写操作,操作模式是`'wb'`。还有一点,读写文本文件时,`read`方法的返回值以及`write`方法的参数是`str`对象(字符串),而读写二进制文件时,`read`方法的返回值以及`write`方法的参数是`bytes-like`对象(字节串)。下面的代码实现了将当前路径下名为`guido.jpg`的图片文件复制到`吉多.jpg`文件中的操作。 + +```Python +try: + with open('guido.jpg', 'rb') as file1: + data = file1.read() + with open('吉多.jpg', 'wb') as file2: + file2.write(data) +except FileNotFoundError: + print('指定的文件无法打开.') +except IOError: + print('读写文件时出现错误.') +print('程序执行结束.') +``` + +如果要复制的图片文件很大,一次将文件内容直接读入内存中可能会造成非常大的内存开销,为了减少对内存的占用,可以为`read`方法传入`size`参数来指定每次读取的字节数,通过循环读取和写入的方式来完成上面的操作,代码如下所示。 + +```Python +try: + with open('guido.jpg', 'rb') as file1, \ + open('吉多.jpg', 'wb') as file2: + data = file1.read(512) + while data: + file2.write(data) + data = file1.read() +except FileNotFoundError: + print('指定的文件无法打开.') +except IOError: + print('读写文件时出现错误.') +print('程序执行结束.') +``` + +### 简单的总结 + +通过读写文件的操作,我们可以实现数据持久化。在Python中可以通过`open`函数来获得文件对象,可以通过文件对象的`read`和`write`方法实现文件读写操作。程序在运行时可能遭遇无法预料的异常状况,可以使用Python的异常机制来处理这些状况。Python的异常机制主要包括`try`、`except`、`else`、`finally`和`raise`这五个核心关键字。`try`后面的`except`语句不是必须的,`finally`语句也不是必须的,但是二者必须要有一个;`except`语句可以有一个或多个,多个`except`会按照书写的顺序依次匹配指定的异常,如果异常已经处理就不会再进入后续的`except`语句;`except`语句中还可以通过元组同时指定多个异常类型进行捕获;`except`语句后面如果不指定异常类型,则默认捕获所有异常;捕获异常后可以使用`raise`要再次抛出,但是不建议捕获并抛出同一个异常;不建议在不清楚逻辑的情况下捕获所有异常,这可能会掩盖程序中严重的问题。最后强调一点,不要使用异常机制来处理正常业务逻辑或控制程序流程,简单的说就是不要滥用异常机制。 + +> **温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。 +> +> 付费群:**789050736**,群一直保留,供大家学习交流讨论问题。 +> +> 免费群:**151669801**,仅供入门新手提问,定期清理群成员。 \ No newline at end of file diff --git a/第024课:对象的序列化和反序列化.md b/第024课:对象的序列化和反序列化.md new file mode 100644 index 0000000..f83937b --- /dev/null +++ b/第024课:对象的序列化和反序列化.md @@ -0,0 +1,206 @@ +## 第024课:对象的序列化和反序列化 + +###读写JSON格式的数据 + +通过上面的讲解,我们已经知道如何将文本数据和二进制数据保存到文件中,那么这里还有一个问题,如果希望把一个列表或者一个字典中的数据保存到文件中又该怎么做呢?在Python中,我们可以将程序中的数据以JSON格式进行保存。JSON是“JavaScript Object Notation”的缩写,它本来是JavaScript语言中创建对象的一种字面量语法,现在已经被广泛的应用于跨语言跨平台的数据交换。使用JSON的原因非常简单,因为它结构紧凑而且是纯文本,任何操作系统和编程语言都能处理纯文本,这就是实现跨语言跨平台数据交换的前提条件。目前JSON基本上已经取代了XML(可扩展标记语言)作为异构系统间交换数据的事实标准。可以在[JSON的官方网站](https://www.json.org/json-zh.html)找到更多关于JSON的知识,这个网站还提供了每种语言处理JSON数据格式可以使用的工具或三方库。 + +下面是JSON格式的一个简单例子,大家可能已经注意到了,它跟Python中的字典非常类似而且支持嵌套结构,就像Python字典中的值还可以是字典,如果我们把下面的代码输入到浏览器控制台中,它会创建出一个JavaScript中的对象。 + +```JSON +{ + "name": "骆昊", + "age": 40, + "friends": ["王大锤", "白元芳"], + "cars": [ + {"brand": "BMW", "max_speed": 240}, + {"brand": "Benz", "max_speed": 280}, + {"brand": "Audi", "max_speed": 280} + ] +} +``` + +![json-in-console](res/json-in-console.png) + +JSON格式的数据类型和Python中的数据类型也是很容易找到对应关系的,正如下面的两张表所示。 + +| JSON | Python | +| ------------------- | ------------ | +| object | dict | +| array | list | +| string | str | +| number (int / real) | int / float | +| true / false | True / False | +| null | None | + +| Python | JSON | +| -------------------------------------- | ------------ | +| dict | object | +| list, tuple | array | +| str | string | +| int, float, int- & float-derived Enums | number | +| True / False | true / false | +| None | null | + +在Python中,我们可以使用`json`模块将字典或列表以JSON格式写入到文件中,代码如下所示。 + +```Python +import json + +my_dict = { + 'name': '骆昊', + 'age': 40, + 'friends': ['王大锤', '白元芳'], + 'cars': [ + {'brand': 'BMW', 'max_speed': 240}, + {'brand': 'Audi', 'max_speed': 280}, + {'brand': 'Benz', 'max_speed': 280} + ] +} +with open('data.json', 'w') as file: + json.dump(my_dict, file) +print('字典已经保存到data.json文件中') +``` + +执行上面的代码,会创建`data.json`文件,文件的内容如下所示,中文是用Unicode编码书写的。 + +```JSON +{"name": "\u9a86\u660a", "age": 40, "friends": ["\u738b\u5927\u9524", "\u767d\u5143\u82b3"], "cars": [{"brand": "BMW", "max_speed": 240}, {"brand": "Audi", "max_speed": 280}, {"brand": "Benz", "max_speed": 280}]} +``` + +`json`模块有四个比较重要的函数,分别是: + +- `dump` - 将Python对象按照JSON格式序列化到文件中 +- `dumps` - 将Python对象处理成JSON格式的字符串 +- `load` - 将文件中的JSON数据反序列化成对象 +- `loads` - 将字符串的内容反序列化成Python对象 + +这里出现了两个概念,一个叫序列化,一个叫反序列化,[维基百科](https://zh.wikipedia.org/)上的解释是:“序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换为可以存储或传输的形式,这样在需要的时候能够恢复到原先的状态,而且通过序列化的数据重新获取字节时,可以利用这些字节来产生原始对象的副本(拷贝)。与这个过程相反的动作,即从一系列字节中提取数据结构的操作,就是反序列化(deserialization)”。 + +我们可以通过下面的代码,从上面创建的`data.json`文件中读取JSON格式的数据并还原成字典。 + +```Python +import json + +with open('data.json', 'r') as file: + my_dict = json.load(file) + print(type(my_dict)) + print(my_dict) +``` + +### 包管理工具pip的使用 + +Python标准库中的`json`模块在数据序列化和反序列化时性能并不是非常理想,为了解决这个问题,可以使用三方库`ujson`来替换`json`。所谓三方库,是指非公司内部开发和使用的,也不是来自于官方标准库的Python模块,这些模块通常由其他公司、组织或个人开发,所以被称为三方库。虽然Python语言的标准库虽然已经提供了诸多模块来方便我们的开发,但是对于一个强大的语言来说,它的生态圈一定也是非常繁荣的。 + +之前安装Python解释器时,默认情况下已经勾选了安装pip,大家可以在命令提示符或终端中通过`pip --version`来确定是否已经拥有了pip。pip是Python的包管理工具,通过pip可以查找、安装、卸载、更新Python的三方库或工具,macOS和Linux系统应该使用pip3。例如要安装替代`json`模块的`ujson`,可以使用下面的命令。 + +```Bash +pip install ujson +``` + +在默认情况下,pip会访问`https://pypi.org/simple/`来获得三方库相关的数据,但是国内访问这个网站的速度并不是十分理想,因此国内用户可以使用豆瓣网提供的镜像来替代这个默认的下载源,操作如下所示。 + +```Bash +pip install ujson -i https://pypi.doubanio.com/simple +``` + +可以通过`pip search`命令根据名字查找需要的三方库,可以通过`pip list`命令来查看已经安装过的三方库。如果想更新某个三方库,可以使用`pip install -U`或`pip install --upgrade`;如果要删除某个三方库,可以使用`pip uninstall`命令。 + +搜索`ujson`三方库。 + +```Bash +pip search ujson +micropython-cpython-ujson (0.2) - MicroPython module ujson ported to CPython +pycopy-cpython-ujson (0.2) - Pycopy module ujson ported to CPython +ujson (3.0.0) - Ultra fast JSON encoder and decoder for Python +ujson-bedframe (1.33.0) - Ultra fast JSON encoder and decoder for Python +ujson-segfault (2.1.57) - Ultra fast JSON encoder and decoder for Python. Continuing + development. +ujson-ia (2.1.1) - Ultra fast JSON encoder and decoder for Python (Internet + Archive fork) +ujson-x (1.37) - Ultra fast JSON encoder and decoder for Python +ujson-x-legacy (1.35.1) - Ultra fast JSON encoder and decoder for Python +drf_ujson (1.2) - Django Rest Framework UJSON Renderer +drf-ujson2 (1.6.1) - Django Rest Framework UJSON Renderer +ujsonDB (0.1.0) - A lightweight and simple database using ujson. +fast-json (0.3.2) - Combines best parts of json and ujson for fast serialization +decimal-monkeypatch (0.4.3) - Python 2 performance patches: decimal to cdecimal, json to + ujson for psycopg2 +``` + +查看已经安装的三方库。 + +```Bash +pip list +Package Version +----------------------------- ---------- +aiohttp 3.5.4 +alipay 0.7.4 +altgraph 0.16.1 +amqp 2.4.2 +... ... +``` + +更新`ujson`三方库。 + +```Bash +pip install -U ujson -i https://pypi.doubanio.com/simple +``` + +如果要更新pip本身,可以使用下面的命令。 + +macOS系统: + +```Bash +pip3 install -U pip +``` + +Windows系统: + +```Bash +python -m pip install -U pip +``` + +删除`ujson`三方库。 + +```Bash +pip uninstall -y ujson +``` + +### 使用网络API获取数据 + +如果想在我们自己的程序中显示天气、路况、航班等信息,这些信息我们自己没有能力提供,所以必须使用网络数据服务。目前绝大多数的网络数据服务(或称之为网络API)都是基于[HTTP](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE)提供JSON格式的数据,在Python程序中,我们可以发送HTTP请求给指定的URL(统一资源定位符),这个URL就是所谓的网络API,如果请求成功,它会返回HTTP响应,而HTTP响应的消息体中就有我们需要的JSON格式的数据。关于HTTP的相关知识,可以看看阮一峰的[《HTTP协议入门》](http://www.ruanyifeng.com/blog/2016/08/http.html)一文。 + +国内有很多提供网络API接口的网站,例如[聚合数据](https://www.juhe.cn/)、[阿凡达数据](http://www.avatardata.cn/)等,这些网站上有免费的和付费的数据接口,国外的[{API}Search](http://apis.io/)网站也提供了类似的功能,有兴趣的可以自行研究。下面的例子演示了如何使用[`requests`](http://docs.python-requests.org/zh_CN/latest/)库(基于HTTP进行网络资源访问的三方库)访问网络API获取国内新闻并显示新闻标题和链接,这个例子使用了[天行数据](https://www.tianapi.com/)提供的国内新闻数据接口,其中的APIKey需要自己到网站上注册申请。 + +安装`requests`库。 + +```Bash +pip install requests -i https://pypi.doubanio.com/simple/ +``` + +获取国内新闻并显示新闻标题和链接。 + +```Python +import requests + +resp = requests.get('http://api.tianapi.com/guonei/?key=APIKey&num=10') +if resp.status_code == 200: + data_model = resp.json() + for news in data_model['newslist']: + print(news['title']) + print(news['url']) + print('-' * 60) +``` + +> **注意**:上面代码中的APIKey需要换成自己在天行数据网站申请的APIKey,同时还要申请开通国内新闻的接口才能获取到JSON格式的数据。这个网站上还有很多非常有意思的网络API接口,例如:垃圾分类、美女图片、周公解梦等等,大家可以仿照上面的代码来调用这些接口。 + +### 简单的总结 + +Python中实现序列化和反序列化除了使用`json`模块之外,还可以使用`pickle`和`shelve`模块,但是这两个模块是使用特有的序列化协议来序列化数据,因此序列化后的数据只能被Python识别,关于这两个模块的相关知识可以自己看看网络上的资料。处理JSON格式的数据很显然是程序员必须掌握的一项技能,因为不管是访问网络API接口还是提供网络API接口给他人使用,都需要具备处理JSON格式数据的相关知识。 + +> **温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。 +> +> 付费群:**789050736**,群一直保留,供大家学习交流讨论问题。 +> +> 免费群:**151669801**,仅供入门新手提问,定期清理群成员。 + diff --git a/第025课:正则表达式的应用.md b/第025课:正则表达式的应用.md new file mode 100644 index 0000000..467977f --- /dev/null +++ b/第025课:正则表达式的应用.md @@ -0,0 +1,165 @@ +## 第025课:正则表达式的应用 + +### 正则表达式相关知识 + +在编写处理字符串的程时,经常会遇到在一段文本中查找符合某些规则的字符串的需求,正则表达式就是用于描述这些规则的工具,换句话说,我们可以使用正则表达式来定义字符串的匹配模式,即如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与模式匹配的部分提取出来或者替换掉。 + +举一个简单的例子,如果你在Windows操作系统中使用过文件查找并且在指定文件名时使用过通配符(`*`和`?`),那么正则表达式也是与之类似的用 来进行文本匹配的工具,只不过比起通配符正则表达式更强大,它能更精确地描述你的需求,当然你付出的代价是书写一个正则表达式比使用通配符要复杂得多,因为任何给你带来好处的东西都需要你付出对应的代价。 + +再举一个例子,我们从某个地方(可能是一个文本文件,也可能是网络上的一则新闻)获得了一个字符串,希望在字符串中找出手机号和座机号。当然我们可以设定手机号是11位的数字(注意并不是随机的11位数字,因为你没有见过“25012345678”这样的手机号),而座机号则是类似于“区号-号码”这样的模式,如果不使用正则表达式要完成这个任务就会比较麻烦。最初计算机是为了做数学运算而诞生的,处理的信息基本上都是数值,而今天我们在日常工作中处理的信息基本上都是文本数据,我们希望计算机能够识别和处理符合某些模式的文本,正则表达式就显得非常重要了。今天几乎所有的编程语言都提供了对正则表达式操作的支持,Python通过标准库中的`re`模块来支持正则表达式操作。 + +关于正则表达式的相关知识,大家可以阅读一篇非常有名的博文叫[《正则表达式30分钟入门教程》](https://deerchao.net/tutorials/regex/regex.htm),读完这篇文章后你就可以看懂下面的表格,这是我们对正则表达式中的一些基本符号进行的扼要总结。 + +| 符号 | 解释 | 示例 | 说明 | +| ------------------------ | -------------------------------- | ------------------- | ------------------------------------------------------------ | +| . | 匹配任意字符 | b.t | 可以匹配bat / but / b#t / b1t等 | +| \\w | 匹配字母/数字/下划线 | b\\wt | 可以匹配bat / b1t / b_t等
    但不能匹配b#t | +| \\s | 匹配空白字符(包括\r、\n、\t等) | love\\syou | 可以匹配love you | +| \\d | 匹配数字 | \\d\\d | 可以匹配01 / 23 / 99等 | +| \\b | 匹配单词的边界 | \\bThe\\b | | +| ^ | 匹配字符串的开始 | ^The | 可以匹配The开头的字符串 | +| $ | 匹配字符串的结束 | .exe$ | 可以匹配.exe结尾的字符串 | +| \\W | 匹配非字母/数字/下划线 | b\\Wt | 可以匹配b#t / b@t等
    但不能匹配but / b1t / b_t等 | +| \\S | 匹配非空白字符 | love\\Syou | 可以匹配love#you等
    但不能匹配love you | +| \\D | 匹配非数字 | \\d\\D | 可以匹配9a / 3# / 0F等 | +| \\B | 匹配非单词边界 | \\Bio\\B | | +| [] | 匹配来自字符集的任意单一字符 | [aeiou] | 可以匹配任一元音字母字符 | +| [^] | 匹配不在字符集中的任意单一字符 | [^aeiou] | 可以匹配任一非元音字母字符 | +| * | 匹配0次或多次 | \\w* | | +| + | 匹配1次或多次 | \\w+ | | +| ? | 匹配0次或1次 | \\w? | | +| {N} | 匹配N次 | \\w{3} | | +| {M,} | 匹配至少M次 | \\w{3,} | | +| {M,N} | 匹配至少M次至多N次 | \\w{3,6} | | +| \| | 分支 | foo\|bar | 可以匹配foo或者bar | +| (?#) | 注释 | | | +| (exp) | 匹配exp并捕获到自动命名的组中 | | | +| (? <name>exp) | 匹配exp并捕获到名为name的组中 | | | +| (?:exp) | 匹配exp但是不捕获匹配的文本 | | | +| (?=exp) | 匹配exp前面的位置 | \\b\\w+(?=ing) | 可以匹配I'm dancing中的danc | +| (?<=exp) | 匹配exp后面的位置 | (?<=\\bdanc)\\w+\\b | 可以匹配I love dancing and reading中的第一个ing | +| (?!exp) | 匹配后面不是exp的位置 | | | +| (?a.\*?b | 将正则表达式应用于aabab,前者会匹配整个字符串aabab,后者会匹配aab和ab两个字符串 | +| +? | 重复1次或多次,但尽可能少重复 | | | +| ?? | 重复0次或1次,但尽可能少重复 | | | +| {M,N}? | 重复M到N次,但尽可能少重复 | | | +| {M,}? | 重复M次以上,但尽可能少重复 | | | + +> **说明:** 如果需要匹配的字符是正则表达式中的特殊字符,那么可以使用`\`进行转义处理,例如想匹配小数点可以写成`\.`就可以了,因为直接写`.`会匹配任意字符;同理,想匹配圆括号必须写成`\(`和`\)`,否则圆括号被视为正则表达式中的分组。 + +### Python对正则表达式的支持 + +Python提供了`re`模块来支持正则表达式相关操作,下面是`re`模块中的核心函数。 + +| 函数 | 说明 | +| -------------------------------------------- | ------------------------------------------------------------ | +| compile(pattern, flags=0) | 编译正则表达式返回正则表达式对象 | +| match(pattern, string, flags=0) | 用正则表达式匹配字符串 成功返回匹配对象 否则返回None | +| search(pattern, string, flags=0) | 搜索字符串中第一次出现正则表达式的模式 成功返回匹配对象 否则返回None | +| split(pattern, string, maxsplit=0, flags=0) | 用正则表达式指定的模式分隔符拆分字符串 返回列表 | +| sub(pattern, repl, string, count=0, flags=0) | 用指定的字符串替换原字符串中与正则表达式匹配的模式 可以用count指定替换的次数 | +| fullmatch(pattern, string, flags=0) | match函数的完全匹配(从字符串开头到结尾)版本 | +| findall(pattern, string, flags=0) | 查找字符串所有与正则表达式匹配的模式 返回字符串的列表 | +| finditer(pattern, string, flags=0) | 查找字符串所有与正则表达式匹配的模式 返回一个迭代器 | +| purge() | 清除隐式编译的正则表达式的缓存 | +| re.I / re.IGNORECASE | 忽略大小写匹配标记 | +| re.M / re.MULTILINE | 多行匹配标记 | + +> **说明:** 上面提到的`re`模块中的这些函数,实际开发中也可以用正则表达式对象的方法替代对这些函数的使用,如果一个正则表达式需要重复的使用,那么先通过`compile`函数编译正则表达式并创建出正则表达式对象无疑是更为明智的选择。 + +下面我们通过一系列的例子来告诉大家在Python中如何使用正则表达式。 + +#### 例子1:验证输入用户名和QQ号是否有效并给出对应的提示信息。 + +```Python +""" +要求:用户名必须由字母、数字或下划线构成且长度在6~20个字符之间,QQ号是5~12的数字且首位不能为0 +""" +import re + +username = input('请输入用户名: ') +qq = input('请输入QQ号: ') +# match函数的第一个参数是正则表达式字符串或正则表达式对象 +# match函数的第二个参数是要跟正则表达式做匹配的字符串对象 +m1 = re.match(r'^[0-9a-zA-Z_]{6,20}$', username) +if not m1: + print('请输入有效的用户名.') +# fullmatch函数要求字符串和正则表达式完全匹配 +# 所以正则表达式没有写起始符和结束符 +m2 = re.fullmatch(r'[1-9]\d{4,11}', qq) +if not m2: + print('请输入有效的QQ号.') +if m1 and m2: + print('你输入的信息是有效的!') +``` + +> **提示:** 上面在书写正则表达式时使用了“原始字符串”的写法(在字符串前面加上了`r`),所谓“原始字符串”就是字符串中的每个字符都是它原始的意义,说得更直接一点就是字符串中没有所谓的转义字符啦。因为正则表达式中有很多元字符和需要进行转义的地方,如果不使用原始字符串就需要将反斜杠写作`\\`,例如表示数字的`\d`得书写成`\\d`,这样不仅写起来不方便,阅读的时候也会很吃力。 + +#### 例子2:从一段文字中提取出国内手机号码。 + +下面这张图是截止到2017年底,国内三家运营商推出的手机号段。 + +![](./res/tel-start-number.png) + +```Python +import re + +# 创建正则表达式对象,使用了前瞻和回顾来保证手机号前后不应该再出现数字 +pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)') +sentence = '''重要的事情说8130123456789遍,我的手机号是13512346789这个靓号, +不是15600998765,也是110或119,王大锤的手机号才是15600998765。''' +# 方法一:查找所有匹配并保存到一个列表中 +tels_list = re.findall(pattern, sentence) +for tel in tels_list: + print(tel) +print('--------华丽的分隔线--------') + +# 方法二:通过迭代器取出匹配对象并获得匹配的内容 +for temp in pattern.finditer(sentence): + print(temp.group()) +print('--------华丽的分隔线--------') + +# 方法三:通过search函数指定搜索位置找出所有匹配 +m = pattern.search(sentence) +while m: + print(m.group()) + m = pattern.search(sentence, m.end()) +``` + +> **说明:** 上面匹配国内手机号的正则表达式并不够好,因为像14开头的号码只有145或147,而上面的正则表达式并没有考虑这种情况,要匹配国内手机号,更好的正则表达式的写法是:`(?<=\D)(1[38]\d{9}|14[57]\d{8}|15[0-35-9]\d{8}|17[678]\d{8})(?=\D)`,国内好像已经有19和16开头的手机号了,但是这个暂时不在我们考虑之列。 + +#### 例子3:替换字符串中的不良内容 + +```Python +import re + +sentence = '你丫是傻逼吗? 我操你大爷的. Fuck you.' +purified = re.sub('[操草艹]|fuck|shit|[傻煞沙][比屄逼叉缺吊屌碉雕]', + '*', sentence, flags=re.IGNORECASE) +print(purified) # 你丫是*吗? 我*你大爷的. * you. +``` + +> **说明:**` re`模块的正则表达式相关函数中都有一个`flags`参数,它代表了正则表达式的匹配标记,可以通过该标记来指定匹配时是否忽略大小写、是否进行多行匹配、是否显示调试信息等。如果需要为flags参数指定多个值,可以使用[按位或运算符](http://www.runoob.com/python/python-operators.html#ysf5)进行叠加,如`flags=re.I | re.M`。 + +#### 例子4:拆分长字符串 + +```Python +import re + +poem = '窗前明月光,疑是地上霜。举头望明月,低头思故乡。' +sentences_list = re.split(r'[,。, .]', poem) +sentences_list = [sentence for sentence in sentences_list if sentence] +for sentence in sentences_list: + print(sentence) +``` + +### 简单的总结 + +正则表达式在字符串的处理和匹配上真的非常强大,通过上面的例子相信大家已经感受到了正则表达式的魅力,当然写一个正则表达式对新手来说并不是那么容易,但是很多事情都是熟能生巧,大胆的去尝试就行了,有一个在线的[正则表达式测试工具](https://c.runoob.com/front-end/854)相信能够在一定程度上帮到大家。 + +> **温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。 +> +> 付费群:**789050736**,群一直保留,供大家学习交流讨论问题。 +> +> 免费群:**151669801**,仅供入门新手提问,定期清理群成员。 \ No newline at end of file