当前位置: 首页 > 后端技术 > Python

你可能不知道的Python技巧

时间:2023-03-25 22:54:13 Python

English|Python鎶€宸у拰绐嶉棬锛屼綘杩樻病鏈夌湅杩囧師鍒泑MartinHeinz(https://martinheinz.dev)璇戣€厊杞浇璇蜂繚鐣欏師鏂囧嚭澶勶紝璇峰嬁鐢ㄤ簬鍟嗕笟鎴栭潪娉曠敤閫斻€傛湁寰堝寰堝鏂囩珷鍐欎簡Python鐨勫緢澶氬緢閰风殑鐗规€э紝姣斿鍙橀噺鎷嗗寘銆侀儴鍒嗗嚱鏁板拰鏋氫妇杩唬锛屼絾鏄疨ython涓繕鏈夊緢澶氫笢瑗胯璋堬紝鎵€浠ュ湪杩欑瘒鏂囩珷涓紝鎴戝皢灏濊瘯灞曠ず涓€浜涚壒鎬ф垜鐭ラ亾骞朵娇鐢ㄨ繃锛屼絾鍦ㄥ叾浠栨枃绔犱腑寰堝皯鎻愬強銆傞偅涔堣鎴戜滑寮€濮嬪惂銆?.鈥淪anitize鈥濊緭鍏ュ瓧绗︿覆鈥淪anitize鈥濈敤鎴疯緭鍏ョ殑鍐呭锛岃繖涓棶棰樺嚑涔庨€傜敤浜庝綘鍐欑殑鎵€鏈夌▼搴忋€傞€氬父灏嗗瓧绗﹁浆鎹负灏忓啓鎴栧ぇ鍐欏氨瓒冲浜嗭紝鏈夋椂浣犱篃鍙互浣跨敤姝e垯琛ㄨ揪寮忔潵瀹屾垚宸ヤ綔锛屼絾瀵逛簬澶嶆潅鐨勬儏鍐垫湁鏇村ソ鐨勬柟娉曪細user_input="This\nstringhas\tsomewhitespaces...\r\n"character_map={ord('\n'):'',ord('\t'):'',ord('\r'):None}user_input.translate(character_map)#Thisstringhassomewhitespaces..."鍦ㄨ繖涓緥瀛愪腑锛屼綘鍙互鐪嬪埌绌烘牸瀛楃'n'鍜?t'琚浛鎹负鍗曚釜绌烘牸锛岃€?r'琚畬鍏ㄧЩ闄ゃ€傝繖鏄竴涓畝鍗曠殑渚嬪瓙锛屼絾鎴戜滑鍙互浣垮畠鏇磋繘涓€姝ワ紝浣跨敤unicodedata搴撳強鍏禼ombining()鍑芥暟鐢熸垚鏇村ぇ鐨勯噸鏄犲皠琛紝骞朵娇鐢ㄥ畠浠庡瓧绗︿覆涓垹闄ゆ墍鏈夐噸闊炽€?.瀵硅凯浠e櫒杩涜鍒囩墖濡傛灉灏濊瘯鐩存帴瀵硅凯浠e櫒杩涜鍒囩墖锛屼細寰楀埌涓€涓猅ypeError锛屾彁绀哄璞′笉鑳借涓嬫爣锛坣otsubscriptable锛夛紝涓嶈繃鏈変竴涓畝鍗曠殑瑙e喅鏂规硶锛歩mportitertoolss=itertools.islice(range(50),10,20)#forvalins:...浣跨敤itertools.islice鎴戜滑鍙互鍒涘缓涓€涓猧slice瀵硅薄锛屽畠鏄竴涓凯浠e櫒锛屽彲浠ヤ骇鐢熸垜浠渶瑕佺殑涓滆タ銆備絾杩欐湁涓€涓噸瑕佺殑璀﹀憡锛屽氨鏄畠浼氭秷鑰楀垏鐗囦箣鍓嶅拰鍒囩墖瀵硅薄islice涓殑鎵€鏈夊厓绱犮€傦紙璇戞敞锛氭湁鍏宠凯浠e櫒鍒囩墖鐨勬洿澶氫俊鎭紝璇烽槄璇籔ython杩涢樁锛氳凯浠e櫒鍜岃凯浠e櫒鍒囩墖锛?.璺宠繃鍙凯浠e璞$殑寮€澶磋姹傜殑琛岋紙渚嬪娉ㄩ噴锛変互.itertools鍐嶆鎻愪緵浜嗕竴涓畝鍗曠殑瑙e喅鏂规锛歴tring_from_file="""//Author:...//License:...////Date:...Actualcontent..."""importitertoolsforlineinitertools銆俤ropwhile(lambdaline:line.startswith("//"),string_from_file.split("\n")):print(line)杩欐浠g爜鍙細鎵撳嵃鍒濆娉ㄩ噴閮ㄥ垎涔嬪悗鐨勫唴瀹广€傚鏋滄垜浠彧鎯充涪寮冭凯浠e櫒鐨勫紑澶达紙鏈緥涓殑娉ㄩ噴锛夛紝骞朵笖涓嶇煡閬撴湁澶氬皯涓紝鍒欐鏂规硶寰堟湁鐢ㄣ€?.鍙敮鎸佸叧閿瓧鍙傛暟鐨勫嚱鏁帮紙kwargs锛夊綋涓€涓嚱鏁伴渶瑕佹彁渚涳紙寮哄埗锛夋洿娓呮櫚鐨勫弬鏁版椂锛屽垱寤轰竴涓彧鏀寔鍏抽敭瀛楀弬鏁扮殑鍑芥暟鍙兘浼氭湁鐢細deftest(*,a,b):passtest("valuefora","valueforb")#TypeError:test()takes0positionalarguments...test(a="value",b="value2")#Works...濡備綘鎵€瑙侊紝浣犲彲浠ラ€氳繃鍦ㄥ叧閿瓧鍙傛暟涔嬪墠鏀剧疆涓€涓弬鏁版潵杞绘澗瑙e喅姝ら棶棰樸€傛樉鐒讹紝濡傛灉鎴戜滑灏嗗畠浠斁鍦ㄥ弬鏁颁箣鍓嶏紝浣嶇疆鍙傛暟涔熸槸鍙兘鐨勩€?銆佸垱寤轰竴涓敮鎸亀ith璇彞鐨勫璞℃垜浠兘鐭ラ亾with璇彞鐨勭敤娉曪紝姣斿鎵撳紑鏂囦欢鎴栬€呰幏鍙栭攣锛屼絾鏄垜浠彲浠ヨ嚜宸卞疄鐜板悧锛熸槸鐨勶紝鎴戜滑鍙互浣跨敤__enter__鍜宊_exit__鏂规硶鏉ュ疄鐜颁笂涓嬫枃绠$悊鍣ㄥ崗璁細classConnection:def__init__(self):...def__enter__(self):#鍒濆鍖栬繛鎺?..def__exit__(self,type,value,traceback):#Closeconnection...withConnection()asc:#__enter__()executes...#conn.__exit__()executes杩欐槸鍦≒ython涓疄鐜颁笂涓嬫枃绠$悊鏈€甯歌鐨勬柟娉曪紝浣嗚繕鏈夊彟涓€绉嶆洿绠€鍗曠殑鏂规硶:fromcontextlibimportcontextmanager@contextmanagerdeftag(name):print(f"<{name}>")yieldprint(f"")withtag("h1"):print("杩欐槸鏍囬.")涓婇潰鐨勪唬鐮佺墖娈典娇鐢╟ontextmanager瑁呴グ鍣ㄥ疄鐜颁簡鍐呭绠$悊鍗忚銆傝緭鍏ith璇彞鏃舵墽琛屾爣璁板嚱鏁扮殑绗竴閮ㄥ垎锛坹ield涔嬪墠锛夛紝鐒跺悗鎵цwith鍧楋紝鏈€鍚庢墽琛屾爣璁板嚱鏁扮殑鍏朵綑閮ㄥ垎銆?.鐢╛_slots__鑺傜渷鍐呭瓨濡傛灉浣犳浘缁忕紪鍐欒繃鍒涘缓鏌愪釜绫荤殑澶ч噺瀹炰緥鐨勭▼搴忥紝浣犲彲鑳藉凡缁忔敞鎰忓埌浣犵殑绋嬪簭绐佺劧闇€瑕佸ぇ閲忓唴瀛樸€傞偅鏄洜涓篜ython浣跨敤瀛楀吀鏉ヨ〃绀虹被瀹炰緥鐨勫睘鎬э紝杩欎娇寰楀畠閫熷害寰堝揩锛屼絾鍐呭瓨鏁堢巼涓嶆槸寰堥珮銆傞€氬父杩欎笉鏄棶棰橈紝浣嗘槸锛屽鏋滄偍鐨勭▼搴忛亣鍒伴棶棰橈紝鎮ㄥ彲浠ュ皾璇曚娇鐢╛_slots__锛?:self.first_name=first_nameself.last_name=last_nameself.phone=phone杩欓噷鍙戠敓鐨勪簨鎯呮槸褰撴垜浠畾涔塤_slots__灞炴€ф椂锛孭ython浣跨敤灏忓瀷鍥哄畾澶у皬鐨勬暟缁勮€屼笉鏄瓧鍏革紝杩欏ぇ澶у噺灏戜簡瀹炰緥鎵€闇€鐨勫唴瀛?浣跨敤__slots__涔熸湁涓€浜涚己鐐光€斺€旀垜浠笉鑳藉0鏄庝换浣曟柊灞炴€э紝鍙兘浣跨敤__slots__涓殑灞炴€с€傚悓鏍凤紝甯︽湁__slots__鐨勭被涓嶈兘浣跨敤澶氶噸缁ф壙銆?.闄愬埗CPU鍜屽唴瀛樹娇鐢ㄥ鏋滀綘涓嶆兂浼樺寲绋嬪簭鍐呭瓨鎴朇PU浣跨敤锛岃€屾槸鎯崇洿鎺ラ檺鍒跺埌涓€涓浐瀹氱殑鏁伴噺锛岄偅涔圥ython涔熸湁涓€涓簱鍙互鍋氬埌锛歩mportsignalimportresourceimportos#ToLimitCPUtimedeftime_exceeded(signo,frame):print("CPUexceeded...")raiseSystemExit(1)defset_max_runtime(seconds):#瀹夎淇″彿澶勭悊绋嬪簭骞惰缃祫婧愰檺鍒秙oft,hard=resource.getrlimit(resource.RLIMIT_CPU)resource.setrlimit(resource.RLIMIT_CPU,(seconds,hard))signal.signal(signal.SIGXCPU,time_exceeded)#闄愬埗鍐呭瓨浣跨敤defset_max_memory(size):soft,hard=resource.getrlimit(resource.RLIMIT_AS)resource.setrlimit(resource.RLIMIT_AS,(size,hard))鍦ㄨ繖閲屾垜浠彲浠ョ湅鍒颁袱涓€夐」鏉ヨ缃渶澶PU杩愯鏃堕棿鍜屽唴瀛樹娇鐢ㄤ笂闄愩€傚浜嶤PU闄愬埗锛屾垜浠鍏堣幏鍙栬鐗瑰畾璧勬簮锛圧LIMIT_CPU锛夌殑杞‖闄愬埗锛岀劧鍚庡皢鍏惰缃负鍙傛暟鎸囧畾鐨勭鏁板拰鍏堝墠鑾峰緱鐨勭‖闄愬埗銆傛渶鍚庯紝鎴戜滑娉ㄥ唽涓€涓俊鍙凤紝濡傛灉瓒呰繃CPU鏃堕棿锛岀郴缁熷皢閫€鍑恒€傝嚦浜庡唴瀛橈紝鎴戜滑鍐嶆鑾峰緱杞‖闄愬埗锛屽苟浣跨敤甯︽湁澶у皬鍙傛暟鐨剆etrlimit鍜屾垜浠幏寰楃殑纭檺鍒舵潵璁剧疆瀹冧滑銆?.鎺у埗鍙互瀵煎叆鐨勫唴瀹规湁浜涜瑷€瀵逛簬瀵煎嚭鎴愬憳锛堝彉閲忋€佹柟娉曘€佹帴鍙o級鏈夐潪甯告槑鏄剧殑鏈哄埗锛屾瘮濡侴olang锛屽畠鍙鍑哄ぇ鍐欏瓧姣嶅紑澶寸殑鎴愬憳銆傚彟涓€鏂归潰锛屽湪Python涓紝闄ら潪鎴戜滑浣跨敤__all__锛屽惁鍒欎竴鍒囬兘浼氳瀵煎嚭锛歞effoo():passdefbar():pass__all__=["bar"]浣跨敤涓婇潰鐨勪唬鐮佺墖娈碉紝鎴戜滑鍙互闄愬埗fromsome_moduleimport*鍙互瀵煎叆鐨勫唴瀹瑰湪浣跨敤鐨勬椂鍊欍€傚浜庝笂闈㈢殑绀轰緥锛岄€氶厤鏃跺彧浼氬鍏ar銆傛澶栵紝鎴戜滑鍙互灏哶_all__璁剧疆涓虹┖锛岃繖鏍峰畠灏辨棤娉曞鍑轰换浣曞唴瀹癸紝骞朵笖鍦ㄤ粠璇ユā鍧椾娇鐢ㄩ€氶厤绗﹀鍏ユ椂浼氬紩鍙慉ttributeError銆?.姣旇緝杩愮畻绗︾殑绠€鍗曟柟娉曚负涓€涓被瀹炵幇鎵€鏈夋瘮杈冭繍绠楃鍙兘寰堢儲浜猴紝鍥犱负鏈夊緢澶氭瘮杈冭繍绠楃-__lt__銆乢_le__銆乢_gt__鎴朹_ge__銆備絾濡傛灉鏈夋洿绠€鍗曠殑鏂规硶鍛紵functools.total_ordering鍙互淇濆瓨锛歠romfunctoolsimporttotal_ordering@total_orderingclassNumber:def__init__(self,value):self.value=valuedef__lt__(self,other):returnself.valueNumber(3))print(Number(1)=Number(15))print(Number(10)<=Number(2))杩欑┒绔熸槸濡備綍宸ヤ綔鐨勶紵total_ordering瑁呴グ鍣ㄧ敤浜庣畝鍖栨垜浠被瀹炰緥鐨勬帓搴忓疄鐜般€傚彧闇€瀹氫箟__lt__鍜宊_eq__锛岃繖鏄渶浣庨檺搴︾殑锛岃楗板櫒灏嗘槧灏勫叾浣欐搷浣溾€斺€斿畠涓烘垜浠~琛ヤ簡绌虹櫧銆傦紙璇戞敞锛氬師浣滆€呯殑鏂囩珷鍒嗕负涓ょ瘒锛屼负浜嗘柟渚胯鑰咃紝鎴戞妸瀹冧滑鏁村悎鍦ㄤ竴璧凤紝浠ヤ笅鏄浜岀瘒鐨勫唴瀹广€傦級10.浣跨敤鍒囩墖鍑芥暟鍛藉悕鍒囩墖锛屼娇鐢ㄥぇ纭紪鐮佺储寮曞€肩殑鏁伴噺浼氬緢蹇牬鍧忓彲缁存姢鎬у拰鍙鎬с€備竴绉嶆柟娉曟槸瀵规墍鏈夌储寮曞€间娇鐢ㄥ父閲忥紝浣嗘垜浠彲浠ュ仛寰楁洿濂斤細#IDFirstNameLastNameline_record="2JohnSmith"ID=slice(0,8)FIRST_NAME=slice(9,21)LAST_NAME=slice(22,27)name=f"{line_record[FIRST_NAME].strip()}{line_record[LAST_NAME].strip()}"#name=="JohnSmith"鍦ㄨ繖涓緥瀛愪腑鎴戜滑鍙互閬垮厤绁炵鐨勭储寮曪紝杩欐牱鍋氱殑鏂规硶鏄湪浣跨敤瀹冧滑涔嬪墠浣跨敤slice鍑芥暟鏉ュ懡鍚嶅畠浠€傛偍杩樺彲浠ラ€氳繃.start銆?stop鍜?stop灞炴€т簡瑙f湁鍏冲垏鐗囧璞$殑鏇村淇℃伅銆?1.杩愯鏃舵彁绀虹敤鎴疯緭鍏ュ瘑鐮佽澶氬懡浠よ宸ュ叿鎴栬剼鏈渶瑕佺敤鎴峰悕鍜屽瘑鐮佹墠鑳借繍琛屻€傛墍浠ュ鏋滀綘纰板阀鍐欎簡杩欐牱鐨勭▼搴忥紝浣犲彲鑳戒細鍙戠幇getpass妯″潡寰堟湁鐢細鍚嶇О锛屽彲浠ユ彁绀虹敤鎴疯緭鍏ュ瘑鐮併€備絾鏄娉ㄦ剰锛屽苟闈炴瘡涓郴缁熼兘鏀寔闅愯棌瀵嗙爜銆侾ython浼氬皾璇曡鍛婃偍锛屽洜姝よ璁颁綇闃呰鍛戒护琛屼笂鐨勮鍛娿€?2.鏌ユ壘璇?瀛楃涓茬殑杩戜技鍖归厤鐜板湪锛屽叧浜嶱ython鏍囧噯搴撲腑鐨勪竴浜涙櫐娑╃殑鐗规€с€傚鏋滄偍鍙戠幇鑷繁闇€瑕佷娇鐢↙evenshtein璺濈[2]涔嬬被鐨勬柟娉曟潵鏌ユ壘涓庢煇浜涜緭鍏ュ瓧绗︿覆鐩镐技鐨勫崟璇嶏紝Python鐨刣ifflib鍙互婊¤冻鎮ㄧ殑闇€姹傘€俰mportdifflibdifflib.get_close_matches('appel',['ape','apple','peach','puppy'],n=2)#returns['apple','ape']difflib.get_close_matches浼氭壘鍒版渶濂界殑A鈥滆冻澶熷ソ鈥濈殑姣旇禌銆傝繖閲岋紝绗竴涓弬鏁颁笌绗簩涓弬鏁板尮閰嶃€傛垜浠繕鍙互鎻愪緵涓€涓彲閫夊弬鏁皀锛屽畠鎸囧畾瑕佽繑鍥炵殑鏈€澶у尮閰嶆暟銆傚彟涓€涓彲閫夌殑鍏抽敭瀛楀弬鏁癱utoff锛堥粯璁ゅ€?.6锛夊彲浠ヨ缃瓧绗︿覆鍖归厤鍒嗘暟鐨勯槇鍊笺€?3.浣跨敤IP鍦板潃濡傛灉浣犲繀椤讳娇鐢≒ython杩涜web寮€鍙戯紝浣犲彲鑳戒細鍙戠幇ipaddress妯″潡鈥嬧€嬮潪甯告湁鐢ㄣ€備竴绉嶆儏鍐垫槸浠嶤IDR锛堟棤绫诲煙闂磋矾鐢憋級鐢熸垚涓€绯诲垪IP鍦板潃锛歩mportipaddressnet=ipaddress.ip_network('74.125.227.0/29')#涔熼€傜敤浜嶪Pv6#IPv4Network('74.125.227.0/29')foraddrinnet:print(addr)#74.125.227.0#74.125.227.1#74.125.227.2#74.125.227.3#...鍙︿竴涓笉閿欑殑鍔熻兘鏄鏌P鍦板潃鐨勭綉缁滄垚鍛樿祫鏍硷細ip=ipaddress.ip_address("74.125.227.3")ipinnet#Trueip=ipaddress.ip_address("74.125.227.12")ipinnet#False鏈夊緢澶氭湁瓒g殑鍑芥暟锛屽彲浠ュ湪杩欓噷鎵惧埌[3]锛屾垜涓嶅啀璧樿堪銆備絾鏄娉ㄦ剰锛宨paddress妯″潡鍜屽叾浠栫綉缁滅浉鍏虫ā鍧椾箣闂寸殑浜掓搷浣滄€ф湁闄愩€備緥濡傦紝鎮ㄤ笉鑳藉皢IPv4Network瀹炰緥瑙嗕负鍦板潃瀛楃涓?鎮ㄩ渶瑕佸厛浣跨敤str杞崲瀹冧滑銆?4.鍦╯hell涓皟璇曠▼搴忓穿婧冨鏋滀綘鏄竴涓嫆缁濆湪Vim鎴朎macs涓娇鐢↖DE鍜屼唬鐮佺殑浜猴紝閭d箞浣犲彲鑳戒細閬囧埌杩欐牱鐨勬儏鍐碉紝鍦↖DE涓湁涓€涓皟璇曞櫒浼氬緢鏈夌敤銆備綘鐭ラ亾鍚楋紵浣犳湁涓€涓?鍙渶浣跨敤python3.8-i杩愯浣犵殑绋嬪簭-涓€鏃︿綘鐨勭▼搴忕粓姝紝-i鍚姩涓€涓氦浜掑紡shell锛屼綘鍙互鍦ㄥ叾涓煡鐪嬫墍鏈夊彉閲忓拰璋冪敤鍑芥暟銆傚緢濂斤紝浣嗘槸浣跨敤瀹為檯鐨勮皟璇曞櫒(pdb)鍛紵璁╂垜浠娇鐢ㄤ互涓嬬▼搴?script.py)锛歞effunc():return0/0func()骞朵娇鐢╬ython3.8-iscript.py杩愯鑴氭湰锛?Scriptcrashes...Traceback(mostrecentcalllast):鏂囦欢鈥渟cript.py鈥濓紝绗?琛岋紝鍦?module>func()涓枃浠垛€渟cript.py鈥濓紝绗?琛岋紝鍦╢unc涓璻eturn0/0ZeroDivisionError:divisionbyzero>>>importpdb>>>pdb.pm()#Post-mortemdebugger>script.py(2)func()->return0/0(Pdb)鎴戜滑鐪嬪埌宕╂簝鍦ㄥ摢閲岋紝鐜板湪璁╂垜浠缃竴涓柇鐐癸細deffunc():breakpoint()#importpdb;pdb.set_trace()return0/0func()鐜板湪鍐嶆杩愯锛歴cript.py(3)func()->return0/0(Pdb)#westarthere(Pdb)stepZeroDivisionError:divisionbyzero>script.py(3)func()->return0/0(Pdb)澶у鏁版椂鍊欙紝鎵撳嵃璇彞鍜岄敊璇俊鎭冻浠ヨ繘琛岃皟璇曪紝浣嗘湁鏃讹紝鎮ㄩ渶瑕佸洓澶勫鎵句互浜嗚В绋嬪簭鍐呴儴鍙戠敓浜嗕粈涔堛€傚湪杩欎簺鎯呭喌涓嬶紝鎮ㄥ彲浠ヨ缃竴涓柇鐐癸紝绋嬪簭灏嗗湪鏂偣澶勫仠姝㈡墽琛岋紝鎮ㄥ彲浠ユ鏌ョ▼搴忥紝渚嬪鍒楀嚭鍑芥暟鍙傛暟銆佽瘎浼拌〃杈惧紡銆佸垪鍑哄彉閲忥紝鎴栬€呭彧鏄竴姝ヤ竴姝ュ湴鍋氥€俻db鏄竴涓姛鑳介綈鍏ㄧ殑Pythonshell锛岀悊璁轰笂浣犲彲浠ユ墽琛屼换浣曚笢瑗匡紝浣嗕綘杩橀渶瑕佷竴浜涜皟璇曞懡浠わ紝鍙互鍦ㄨ繖閲屾壘鍒癧4]銆?5.鍦ㄤ竴涓被涓畾涔夊涓瀯閫犲嚱鏁板嚱鏁伴噸杞芥槸缂栫▼璇█锛堜笉鍖呮嫭Python锛変腑闈炲父鏅亶鐨勪竴涓壒鎬с€傚嵆浣夸綘涓嶈兘閲嶈浇鏅€氬嚱鏁帮紝浣犱粛鐒跺彲浠ヤ娇鐢ㄧ被鏂规硶閲嶈浇鏋勯€犲嚱鏁帮細@classmethoddeftoday(cls):t=datetime.datetime.now()returncls(t.year,t.month,t.day)d=Date.today()print(f"{d.day}/{d.month}/{d.year}")#14/9/2019浣犲彲鑳戒細鎯冲皢鏇夸唬鏋勯€犲嚱鏁扮殑鎵€鏈夐€昏緫鏀惧叆__init__涓紝浣跨敤*args銆?*kwargs鍜屼竴鍫唅f璇彞锛岃€岃€屼笉鏄娇鐢ㄧ被鏂规硶鏉ヨВ鍐炽€傝繖鍙兘鏈夋晥锛屼絾瀹冨彉寰楅毦浠ラ槄璇诲拰缁存姢銆傚洜姝わ紝鎴戝缓璁皢寰堝皯鐨勯€昏緫鏀惧叆__init__涓紝骞跺湪鍗曠嫭鐨勬柟娉?鏋勯€犲嚱鏁颁腑瀹屾垚鎵€鏈夋搷浣溿€傝繖鏍凤紝缁撴灉鏄负绫荤殑缁存姢鑰呭拰鐢ㄦ埛鎻愪緵骞插噣鐨勪唬鐮併€?6.浣跨敤瑁呴グ鍣ㄦ潵缂撳瓨鍑芥暟璋冪敤浣犳槸鍚︽浘缁忕紪鍐欒繃涓€涓墽琛屾槀璐电殑I/O鎿嶄綔鎴栦竴浜涚浉褰撴參鐨勯€掑綊鐨勫嚱鏁帮紝骞朵笖璇ュ嚱鏁板彲鑳藉彈鐩婁簬缂撳瓨锛堝瓨鍌級鍏剁粨鏋滐紵濡傛灉鏈夛紝閭d箞鏈変竴涓畝鍗曠殑瑙e喅鏂规锛屽嵆浣跨敤functools鐨刲ru_cache锛歠romfunctoolsimportlru_cacheimportrequests@lru_cache(maxsize=32)defget_with_cache(url):try:r=requests.get(url)returnr.text闄や簡锛氫负["https://google.com/"銆?https://martinheinz.dev/"銆?https://reddit.com/"銆?https://google"涓殑url杩斿洖鈥滄湭鎵惧埌鈥?com/","https://dev.to/martinheinz","https://google.com/"]:get_with_cache(url)print(get_with_cache.cache_info())#CacheInfo(hits=2,misses=4,maxsize=32,currsize=4)鍦ㄨ繖涓緥瀛愪腑鎴戜滑浣跨敤浜嗗彲缂撳瓨鐨凣ET璇锋眰锛堟渶澶?2涓紦瀛樼粨鏋滐級銆傛偍杩樺彲浠ョ湅鍒版垜浠彲浠ヤ娇鐢╟ache_info鏂规硶妫€鏌ュ嚱鏁扮殑缂撳瓨淇℃伅銆傝楗板櫒杩樻彁渚涗簡涓€涓猚lear_cache鏂规硶鏉ヤ娇缂撳瓨缁撴灉鏃犳晥銆傛垜杩樻兂鎸囧嚭锛岃繖涓嚱鏁颁笉搴旇涓庢湁鍓綔鐢ㄧ殑鍑芥暟涓€璧蜂娇鐢紝鎴栬€呭湪姣忔璋冪敤鏃跺垱寤哄彲鍙樺璞°€?7.鏌ユ壘鍙凯浠e璞′腑鏈€甯稿嚭鐜扮殑鍏冪礌鏌ユ壘鍒楄〃涓渶甯歌鐨勫厓绱犳槸涓€涓緢甯歌鐨勪换鍔★紝鍙互浣跨敤for寰幆鍜屽瓧鍏革紙鏄犲皠锛夛紝浣嗚繖涓嶆槸蹇呴渶鐨勶紝鍥犱负鍦╟ollections妯″潡锛氫粠collectionsimportCountercheese=["gouda","brie","feta","creamcheese","feta","cheddar","parmesan","parmesan","cheddar","mozzarella","cheddar","gouda","parmesan","camembert","emmental","camembert","parmesan"]cheese_count=Counter(cheese)print(cheese_count.most_common(3))#鎵撳嵃锛歔('parmesan',4),('cheddar',3),('gou鈥嬧€媎a',2)]瀹為檯涓婏紝Counter鍙槸涓€涓皢鍏冪礌鏄犲皠鍒颁簨浠剁殑瀛楀吀锛屽洜姝ゆ偍鍙互灏嗗畠鐢ㄤ綔鏅€氬瓧鍏革細print(cheese_count["mozzarella"])#Prints:1cheese_count["mozzarella"]+=1print(cheese_count["mozzarella"])#Prints:2闄ゆ涔嬪锛屾偍鍙互浣跨敤update(more_words)鏂规硶杞绘澗娣诲姞鏇村鍏冪礌銆侰ounter鐨勫彟涓€涓緢閰风殑鍔熻兘鏄偍鍙互浣跨敤鏁板杩愮畻锛堝姞娉曞拰鍑忔硶锛夌粍鍚堝拰鍑忓幓Counter鐨勫疄渚嬨€傛€荤粨鍦ㄦ棩甯哥殑Python缂栫▼涓紝骞堕潪鎵€鏈夎繖浜涘姛鑳介兘鏄繀涓嶅彲灏戠殑鍜屾湁鐢ㄧ殑锛屼絾鍏朵腑涓€浜涘姛鑳藉彲鑳戒細涓嶆椂娲句笂鐢ㄥ満锛屽苟涓斿畠浠繕鍙互绠€鍖栧師鏈彲鑳藉啑闀夸笖鐑︿汉鐨勪换鍔°€傛垜杩樻兂鎸囧嚭锛屾墍鏈夎繖浜涚壒鎬ч兘鏄疨ython鏍囧噯搴撶殑涓€閮ㄥ垎锛屽敖绠″叾涓竴浜涘湪鎴戠湅鏉ラ潪甯稿儚鏍囧噯搴撲腑鐨勯潪鏍囧噯鍐呭銆傛墍浠ユ瘡褰撲綘鎯崇敤Python瀹炵幇涓€浜涗笢瑗匡紝棣栧厛瑕佸湪鏍囧噯搴撲腑鏌ユ壘锛屽鏋滄壘涓嶅埌锛岄偅涔堜綘鍙兘杩樻病鏈変粩缁嗘煡鎵撅紙濡傛灉瀹冪湡鐨勪笉瀛樺湪锛岄偅涔堝畠蹇呴』鍦ㄦ煇浜涚涓夋柟搴撲腑锛?娲惧鍥句功棣嗭級銆傚鏋滀綘浣跨敤Python锛岄偅涔堟垜璁や负杩欓噷鍒嗕韩鐨勫ぇ閮ㄥ垎鎶€宸у嚑涔庢瘡澶╅兘浼氭湁鐢紝鎵€浠ユ垜甯屾湜瀹冧滑鑳芥淳涓婄敤鍦恒€傚彟澶栵紝濡傛灉浣犲杩欎簺Python鎶€宸у拰绐嶉棬鏈変粈涔堟兂娉曪紝鎴栬€呬綘鐭ラ亾瑙e喅涓婅堪闂鐨勬洿濂芥柟娉曪紝璇峰憡璇夋垜锛侌煓傜浉鍏抽摼鎺1]鍘熸枃鍦板潃锛歨ttps://martinheinz.dev/blog/1鍘熸枃缈昏瘧锛歨ttps://mp.weixin.qq.com/s/va...[2]缂栬緫璺濈锛歨ttps://en.wikipedia.org/wiki...[3]姝ゅ锛歨ttps://docs.python.org/3/how...[4]杩欓噷锛歨ttps://docs.python.org/3/lib...鍏紬鍙枫€怭ython鐚€戯紝鏈彿杩炶浇涓€绯诲垪浼樿川鏂囩珷锛屽寘鎷柕鏄熷摬瀛︾尗绯诲垪銆丳ython杩涢樁绯诲垪銆佸ソ涔︽帹鑽愮郴鍒椼€佹妧鏈啓浣溿€佷紭璐ㄨ嫳鏂囨帹鑽愬強缈昏瘧绛夛紝娆㈣繋鍏虫敞銆?/p>