é«çº§ç¼ç¨ - å¯¹è¯ | AIçæåç¿»è¯
A: å¿ï¼æä¸ç´å¨åå¤å¹¿ä¸ç 08074 Advanced Computer Programming èè¯ãå 容太å¤äºââPython data typesãOOPãalgorithmsãGUIãdatabasesãnetworkingãæä»¬ä»åªéå¼å§å¢ï¼
B: 好é®é¢ãæä»¬ä» data types å¼å§å§ï¼å 为å®ä»¬æ¯åºç¡ãå¨ Python ä¸ï¼å ³é®åºå«å¨äº mutable å immutable ç±»åãLists å dicts æ¯ mutable çï¼è tuples å strings 䏿¯ââè¿ä¼å½±åå®ä»¬ä¼ éç»å½æ°æ¶çè¡ä¸ºã
A: 对ï¼immutability å°±æ¯ä¸ºä»ä¹ Python ä¸ç strings å¯ä»¥å®å ¨å°ç¨ä½ dictionary keysãTuples 乿¯ãä½ææ»æ¯æéå¦çï¼åªæ¯å 为 tuple æ¯ immutable çï¼å¹¶ä¸æå³çéé¢çå¯¹è±¡ä¹æ¯ââ妿 tuple å å«ä¸ä¸ª listï¼é£ä¸ª list ä»ç¶å¯ä»¥è¢« mutateã
B: è¿æ¯ä¸ªç»å
¸é·é±ãæ¥ä¸æ¥æ¯ control structuresââèè¯å欢æµè¯ nested loops å loops ä¸ç breakãcontinue å else ç使ç¨ãä½ ç¥éåï¼Python ç loop else åªå¨ loop 没æè¢« break éåºæ¶æè¿è¡ï¼è¿è®©å¾å¤å¦çæå°æè®¶ã
A: æ¯çï¼è¿æ¯ Python ç¬ç¹ä½å¼ºå¤§çç¹æ§ä¹ä¸ãå®å¨ search loops ä¸è¶ 级æç¨ââå¦æä½ æ¾å°é¡¹ç®ï¼å°± breakï¼å¦ææ²¡æ¾å°ï¼else block å°±è½å¹²åå°å¤çâæªæ¾å°âæ åµï¼èä¸éè¦ flag variableã
B: æ¥è¯´è¯´ functionsãèè¯ç»å¸¸æµè¯ default arguments å *args/**kwargsãéè¦çæ¯ï¼default argument values å¨å®ä¹æ¶åªè¢« evaluate 䏿¬¡ï¼è䏿¯æ¯æ¬¡è°ç¨ââæä»¥ä½¿ç¨ mutable default å¦ list æ¯ä¸ªèåç bugï¼ççåçã
A: 没éãå¦æä½ å def add(item, lst=[]) 并夿¬¡è°ç¨ï¼ä½ å°±æ¯å¨ææè°ç¨ä¸å
±äº«åä¸ä¸ª listãä¿®å¤æ¹æ³æ¯ç¨ None ä½ä¸º defaultï¼å¹¶å¨ function body å
å建 listãè¿æ¯èè¯ä¸é常常è§çé·é±ã
B: ç°å¨æ¯ OOPââè¿æ¯ä¸ªå¤§ç« èãPython ä¸ç encapsulation éè¿çº¦å®å®ç°ï¼ä½¿ç¨åä¸å线表示 protectedï¼åä¸å线表示 name-mangled private attributesãè¯è¨ä¸å¼ºå¶æ§è¡ï¼ä½å®åå ¶ä»å¼åè ä¼ è¾¾æå¾ã
A: è¿æ inheritanceââPython æ¯æ multiple inheritanceï¼éè¿ MROï¼Method Resolution Orderï¼ãPython ä½¿ç¨ C3 linearization algorithm æ¥å³å®åªä¸ª parent class ç method å 被è°ç¨ï¼ä»å·¦å°å³éå base classesã
B: Python ä¸ç polymorphism å®é 䏿¯ duck typingââ妿ä¸ä¸ªå¯¹è±¡æä½ éè¦çæ¹æ³ï¼å®å°±è½å·¥ä½ï¼ä¸ç®¡å®ç class æ¯ä»ä¹ãè¿å°±æ¯ä¸ºä»ä¹ lists å custom iterators é½è½æ ç¼å°å¨ for loop ä¸å·¥ä½ã
A: Special methods ä¹è¢«å¤§éæµè¯ã__init__ æ¯ constructorï¼__str__ ç¨äº human-readable outputï¼__repr__ ç¨äº developer-facing representationï¼è __len__ã__getitem__ 让 custom objects å sequences 䏿 ·è¡ä¸ºã
B: 转å algorithms å data structuresãèè¯æ¶µç list comprehensionsãdictionary comprehensions å set operationsãå [x**2 for x in range(10) if x % 2 == 0] è¿æ ·ç comprehension æ¢ç®æ´å髿ââé¿å
äºéå¤ list.append çå¼éã
A: Recursion æ¯å¦ä¸ä¸ªå ³é®è¯é¢ãç»å ¸ä¾åæ¯ factorial å Fibonacciï¼ä½èè¯å¯è½é® recursive directory traversal æ tree traversalãå§ç»è®°ä½ Python ç default recursion limit æ¯ 1000ââå¯¹äº deep recursionï¼ä½ éè¦å¢å å®æä½¿ç¨ iterationã
B: å¯¹äº sortingï¼å¦çåºè¯¥çè§£ Python çå
ç½® sort() ä½¿ç¨ Timsortââmerge sort å insertion sort ç hybridï¼stable ä¸å¹³å O(n log n)ãkey= åæ°è®©ä½ æ custom criteria æåºï¼è䏿¹åæ°æ®ã
A: Binary search ä¹è¢«æµè¯ââå®éè¦ä¸ä¸ª sorted listï¼å¹¶å¨æ¯æ¥ halve search spaceãbisect module ä¼é å°å®ç°äºå®ãå¦çåºè¯¥ç解为ä»ä¹å®æ¯ O(log n)ï¼æ¯æ¬¡ comparison æ¶é¤ä¸åå©ä½ candidatesã
B: Exception handling è³å
³éè¦ãtry-except-else-finally ç»æå¾éè¦ï¼else block åªå¨æ²¡æ exception 被 raised æ¶è¿è¡ï¼è finally æ»æ¯è¿è¡ââå³ä½¿ try block 䏿 returnãè¿è®© finally å®ç¾éå cleanupï¼å¦å
³é filesã
A: ä½ å¯ä»¥éè¿ subclassing Exception æ¥ raise custom exceptionsãè¿æ¯å¥½ç设计ââ让 callers è½åç¬ catch ä½ ç specific error typeï¼è䏿¯ generic errorsãèè¯å¯è½è®©ä½ å®ä¹ä¸ä¸ª custom exception å¹¶ç¨ meaningful message raise å®ã
B: File I/Oââå®å
¨ç pattern æ¯ä½¿ç¨ with open(filename) as fï¼å®æ¯ context managerãå®ç¡®ä¿å³ä½¿å
é¨åºéï¼file ä¹ä¼æ£ç¡®å
³éãç¨ for line in f éè¡è¯»å对 large files æ¯ memory-efficient çã
A: å¯¹äº serializationï¼JSON æ¯ human-readable å cross-platform çââç¨ json.dumps() åºååï¼json.loads() ååºååãPickle æ¯ Python-specific çï¼è½åºååå ä¹ä»»ä½ Python objectï¼ä½ä¸è¦ unpickle untrusted dataã
B: os å sys modules ç»å¸¸åºç°ãos.path.join 以 platform-independent æ¹å¼æå»º pathsï¼os.listdir ååº directory contentsï¼os.makedirs å建 nested directoriesãsys.argv ç»åº command-line argumentsï¼sys.exit ç»æ¢ç¨åºã
A: datetime module ä¹è¢«æµè¯ãä½ ç¨ datetime.date(year, month, day) å建 dateï¼ä¸¤ä¸ª dates ç¸åç»åº timedelta objectãç¨ strftime æ ¼å¼åï¼strptime è§£ææ¯èè¯å欢ç practical skillsã
B: ç°å¨æ¯ GUIï¼ç¨ tkinterââæ ¸å¿æ¦å¿µæ¯ event loopãä½ å建 widgets å¦ LabelãButtonãEntryï¼ç¨ pack æ grid æ¾å
¥ windowï¼bind callbacks å° eventsï¼ç¶åè°ç¨ mainloop() é»å¡å¹¶å¤ç eventsï¼ç´å° window å
³éã
A: Geometry managers å¾éè¦ï¼pack 线æ§å å widgetsï¼grid æ rows å columns æ¾ç½®ï¼place ç¨ absolute coordinatesã对äºèè¯ï¼grid 对 forms å layouts æçµæ´»ââä½ å¯ä»¥ span å¤ä¸ª columnsã
B: Database ç¨ SQLite3ââç¨ sqlite3.connect() è¿æ¥ï¼è·å cursorï¼execute SQL statementsï¼commit changesãå
³é® workflow æ¯ï¼connect, cursor, execute, commit, closeãç¨ ? placeholders ç parameterized queries 鲿¢ SQL injectionã
A: è¿æ fetchingââfetchone() è¿åä¸è¡ï¼fetchall() è¿åææ rows ä½ä¸º tuples ç listãç¨ CREATE TABLE IF NOT EXISTS å建 tables æ¯å¥½ practiceï¼é¿å
éå¤è¿è¡åºéãè¿å¨ practical coding questions ä¸åºç°ã
B: Network programmingââsocket module æ¯åºç¡ãä½ éè¿ bind socket å° address å port å建 TCP serverï¼listen connectionsï¼ç¶åå¨ loop ä¸ accept() æ¯ä¸ª clientãClient connectsï¼sends dataï¼receives responseã
A: requests library ç®å HTTPâârequests.get(url) è·å pageï¼response ç .json() èªå¨è§£æ JSONã对äºèè¯ï¼ç¥éå¦ä½ handle response status codes å parse JSON responses å°±å¤äºã
B: Functional programmingââlambda å建 inline anonymous functionsãmap(func, iterable) 对æ¯ä¸ª element åºç¨ functionï¼filter(func, iterable) åªä¿ç function è¿å True ç elementsãè¿äºæ¯ explicit for loops çå¹²åæ¿ä»£ã
A: Decorators 对å¾å¤å¦çæ¥è¯´ä¼é ä½ intimidatingãä¸ä¸ª decorator åªæ¯ä¸ä¸ª functionï¼å®æ¥åå¦ä¸ä¸ª function ä½ä¸º input å¹¶è¿åä¸ä¸ª new functionãå® wrap original æ¥æ·»å behaviorââå¦ logging æ timingââèä¸ä¿®æ¹ original codeã
B: Generators æ¯ memory-efficient iteratorsãGenerator function ç¨ yield èé returnââæ¯æ¬¡ next() è°ç¨ä»ä¸æ¬¡æåå¤ resume executionãè¿éåå¤ç large datasetsï¼èä¸ä¸æ¬¡æ§å è½½ææå° memoryã
A: Context managers éè¿ __enter__ å __exit__ å®ç° with statementsãä½ å¯ä»¥åèªå·±ç context managerï¼è®© setup å¨ __enter__ ä¸åçï¼teardownââå¦å
³é database connectionââå¨ __exit__ ä¸èªå¨åçã
B: å¯¹äº multithreadingï¼threading module è®©ä½ concurrently è¿è¡ tasksãä½ Python ç GILï¼Global Interpreter Lockï¼æå³ç䏿¬¡åªæä¸ä¸ª thread æ§è¡ Python bytecodeãThreading éå I/O-bound tasksï¼ä½ä¸éå CPU-bound computationã
A: å¯¹äº CPU-bound workï¼multiprocessing æ¯çæ¡ââæ¯ä¸ª process æèªå·±ç memory space å GILï¼æä»¥å®ä»¬çæ£å¹¶è¡è¿è¡å¨ multiple cores ä¸ãèè¯å¯è½è®©ä½ åºå使¶ç¨ threading vs multiprocessingã
B: æ»ç»ä¸ä¸ï¼èè¯ç»ææµè¯ theoryââå¦è§£é decorator æ generator åä»ä¹ââå practical codingãæç建议ï¼ä¸ºæ¯ä¸ª concept åå®é codeï¼èä¸åªæ¯é 读ãHands-on practice æ¯ internalize è¿äº patterns çå¯ä¸æ¹å¼ã
A: ç»å¯¹åæãèä¸å½»åº review standard libraryââos, sys, datetime, random, json, sqlite3, threadingãè¿äºå ä¹åºç°å¨æ¯ä¸ª practical question ä¸ãç¥éå¦ä½å¨å个ç¨åºä¸ combine å®ä»¬æ¯ pass å high score çåºå«ã
A: æä»¬æ·±å ¥ decorators å§ï¼å 为å¦çå¾å¾åª memorize syntax è䏿 mechanicsãæ¬è´¨ä¸ï¼decorator ç¨ wrapper æ¿æ¢ functionãå½ä½ å¨ function ä¸å @my_decorator æ¶ï¼Python ç«å³è°ç¨ my_decorator(original_func) å¹¶å°ç»æ bind ååä¸ä¸ª nameã
B: 对ï¼è¿å°±æ¯ä¸ºä»ä¹ wrapper function å¿ é¡»æ¥åå original ç¸åç argumentsââæç¨ *args å **kwargs æ³åãå¦æä½ å¿äº return wrapper çç»æï¼decorated function ä¼ silently return Noneï¼è¿æ¯ subtle è frustrating ç bugã
A: è¿æä¸¢å¤± original function metadata çé®é¢ãDecoration åï¼func.name æ¾ç¤º wrapper ç nameï¼è䏿¯ originalãä¿®å¤æ¯ç¨ @functools.wraps(func) å¨ä½ ç decorator å ââå®å° original ç nameãdocstring å signature å¤å¶å° wrapper ä¸ã
B: Stacking decorators æ¯å¦ä¸ä¸ª exam topicãå½ä½ stack @decorator_a å @decorator_b æ¶ï¼Python bottom-up åºç¨å®ä»¬ââdecorator_b å wrapï¼ç¶å decorator_a wrap ç»æãä½è°ç¨ function æ¶ execution order æ¯ top-downï¼æä»¥ @decorator_a ç wrapper å è¿è¡ã
A: ç°å¨ generatorsââ让æä»¬ç²¾ç¡®å°è¯´ yield å¦ä½å é¨å·¥ä½ãå½è°ç¨ generator function æ¶ï¼å®æ ¹æ¬ä¸ executeãå®è¿åä¸ä¸ª generator objectãåªæè°ç¨è¯¥ object ç next() æ¶æå¼å§ executionï¼å¹¶å¨æ¯ä¸ª yield æåï¼preserving æ´ä¸ª local stateã
B: è¿ç§ state preservation 让 generators 强大ãLocal variablesãinstruction pointerï¼çè³ call stackââå¨ yields é´é½è¢« frozenãä¸ä¸ªéè¡è¯»å huge log file ç generator åªç¨å¾å° memoryï¼è䏿¯å°æ´ä¸ª file å è½½å° list ä¸ã
A: Generator expressions ä¹å¯æµè¯ââå®ä»¬å list comprehensions ä½ç¨ parentheses èé bracketsãå (x**2 for x in range(1000))ãå®ä»¬æ¯ lazy çï¼æé compute æ¯ä¸ª valueï¼ä¸å list comprehensions é¢å
compute ææå¹¶åå¨ã
B: ä½ ä¹å¯ä»¥ç¨ send() method å generator åé valuesãYielded expression å¯ä»¥æ¥æ¶ sent valueï¼è®© generators æä¸º two-way communication channelsãè¿æ¯ coroutines çåºç¡ï¼ä¸è¿å¯¹äºè¿ä¸ªèè¯ï¼çè§£ basic yield behavior æ¯ä¼å ã
A: 让æä»¬æ´ç²¾ç¡®å°è° iteratorsãä¸ä¸ª iterator æ¯ä»»ä½æ iter å next methods ç objectãiter è¿å selfï¼next è¿åä¸ä¸ä¸ª value æ raise StopIterationãFor loop èªå¨è°ç¨è¿äºââ对 iterable è°ç¨ iter()ï¼ç¶ååå¤ next()ã
B: è¿å°±æ¯ä¸ºä»ä¹ä½ è½å¨ custom class ä¸ iterateââåªéå®ç°è¿å self ç iter åä½ ç logic ç nextã䏿¦ raise StopIterationï¼for loop 就干åéåºãè¿æ¯ index-based loops 对 custom data structures å¦ linked lists æ trees æ´å¹²åã
A: Context managersââå¦çåºè¯¥è½ä¸¤ç§æ¹å¼åä¸ä¸ªï¼ç¨æ enter å exit ç classï¼åç¨ contextlib ç @contextmanager decoratorãDecorator æ¹æ³ä¼é ï¼yield 忝 setupï¼yield æ¯ with block ç bodyï¼yield 忝 teardownã
B: exit method æ¥æ¶ä¸ä¸ª argumentsï¼exc_type, exc_val, exc_tbââè¿äºæè¿° with block å åççä»»ä½ exceptionã妿 exit è¿å Trueï¼exception 被 suppressedãè¿å None æ False è®©å® propagateãè¿ç»ä½ error handling ç fine-grained controlã
A: ç°å¨æ·±å ¥ exam ç multithreadingãthreading.Thread class æ¥å target function å optional argsãä½ è°ç¨ .start() å¼å§ executionï¼.join() çå¾ å®å®æã没æ join()ï¼main program å¯è½å¨ threads 宿å exitã
B: Race conditions æ¯ä¸»è¦ hazardãå¦æä¸¤ä¸ª threads åæ¶ modify shared variableï¼ç»æä¸å¯é¢æµãä¿®å¤æ¯ç¨ threading.Lockââä¸ä¸ª thread acquire lockï¼åå·¥ä½ï¼ç¶å releaseãå¦ä¸ä¸ª thread é»å¡ç´å° lock å¯ç¨ã
A: With statement å locks é
åå®ç¾ââwith lock: å¨ entry æ¶ acquireï¼å¨ exit æ¶ releaseï¼å³ä½¿å
鍿 exceptionãè¿æ¯æå¨è°ç¨ lock.acquire() å lock.release() å®å
¨å¾å¤ï¼ä½ å¯è½å¨ error paths ä¸å¿è®° releaseã
B: å¯¹äº multiprocessing moduleï¼interface å ä¹å threading 䏿 ·ï¼ä½æ¯ä¸ª Process å¨èªå·±ç Python interpreter å memory ä¸è¿è¡ãProcesses é´ sharing data éè¦ explicit mechanisms å¦ Queue æ Pipeââä¸è½å threads 飿 ·ç´æ¥ share variableã
A: 让æä»¬æ´æ·±å ¥ tkinterãStringVarãIntVar å DoubleVar æ¯ç¹æ® variable typesï¼å½ value ååæ¶ auto-notify widgetsãå° StringVar bind å° Entry widget ç textvariable optionï¼è¯»å .get() å°±è½å¾å°å½å inputï¼èæ é manual event handlingã
B: Message boxes æ¯ practical exam materialââmessagebox.showinfo()ãmessagebox.showerror() å messagebox.askyesno() å建 popup dialogsãaskyesno åä½è¿å True æ Falseï¼æä»¥å¯ç¨äº destructive operations å¦å é¤ records å确认ã
A: Canvas widget å¼å¾ç¥éââå®è®©ä½ programmatically ç»å¶ shapesãlinesãtextï¼çè³ imagesãä½ è°ç¨ canvas.create_rectangle()ãcanvas.create_oval() çï¼ç¨ coordinate argumentsãå®å¯¹ simple data visualization æ exam coding questions ä¸ç game boards 徿ç¨ã
B: Tkinter ä¸ç event bindingï¼ç¨ bind() method å° events map å° callbacksãEvent string format éè¦ï¼â
A: ç°å¨æ·±å ¥ SQLite3ãTransactions æ¯å ³é®ââé»è®¤ä¸ï¼Python ä¸ç sqlite3 对 DDL æ¯ autocommitï¼ä½å¯¹ DML å¦ INSERTãUPDATEãDELETE éè¦ explicit commit()ãå¿è®° commit æ¯å¦çå¨ coding questions 䏿叏è§çé误ã
B: ç¨ with sqlite3.connect() as conn: å° connection ä½ä¸º context managerï¼è½èªå¨ handle commit å rollbackââclean exit æ¶ commitï¼exception æ¶ rollbackãè¿æ¯ safest patternï¼å¹¶å¨ exam answers 䏿¾ç¤ºå¯¹ transactions ç好çè§£ã
A: Row objects vs tuplesââé»è®¤ï¼fetchall() è¿å tuplesãä½å¦æä½ 设置 conn.row_factory = sqlite3.Rowï¼ä½ å°±å¾å°æ¯æ index å column-name access ç Row objectsãæä»¥ row['name'] èé row[0]ââå¨ larger queries 䏿´ readableã
B: Sockets ç network programming ä¸ï¼TCP å UDP çåºå«å¯æµè¯ãTCP ç¨ SOCK_STREAMââconnection-orientedãreliableãorderedãUDP ç¨ SOCK_DGRAMââconnectionlessãæ´å¿«ï¼ä½æ delivery guaranteeã大夿° exam questions èç¦ TCPã
A: TCP server workflow æ specific sequenceï¼socket() å建 socketï¼bind() åé address å portï¼listen() è¿å ¥ listening modeï¼ç¶å accept() é»å¡ç´å° client connectsï¼è¿åç¹å® client ç new socket å client ç addressã
B: Client ä¾§ï¼socket() å建ï¼ç¶å connect() å server ç address å port åèµ· handshakeãç¶å send() å recv() äº¤æ¢ dataãRecv() argument æ¯ buffer sizeââé常 1024 æ 4096 bytesãå§ç»ç¨ .decode(âutf-8â) å° bytes decode å° stringã
A: ä¸ä¸ªå¸¸è§ exam question æ¯è®©ä½ å echo serverââserver æ¥æ¶ message å¹¶ unchanged åéåå»ã宿µè¯ä½ æ¯å¦çè§£å®æ´ç socket lifecycleï¼å æ¬ exchange åå ³é client socket å done æ¶å ³é server socketã
B: Requests library 为 HTTP æ½è±¡äºææè¿äºãå¼å¾æ³¨æï¼å§ç»å¨å¤ç body å check response.status_codeã200 表示 successï¼404 表示 not foundï¼500 表示 server errorãShortcut response.raise_for_status() å¯¹ä»»ä½ 4xx æ 5xx code æ exceptionã
A: 让æä»¬å顾 exception handling ç edge casesãä½ å¯ä»¥ç¨ tuple å¨ä¸ä¸ª except clause catch multiple exception typesï¼except (ValueError, TypeError) as eãas e bind exception instanceï¼æä»¥ä½ è½ print str(e) æ¾ç¤º error messageã
B: Exception chaining æ¯ advanced ä½å¯è½åºç°ââå½ä½ catch ä¸ä¸ª exception å¹¶ raise å¦ä¸ä¸ªæ¶ï¼Python èªå¨ chain å®ä»¬ãä½ ä¹å¯ä»¥ç¨ raise NewException(...) from original_exception explicitly set causeï¼å®å¨ tracebacks 䏿¸
æ¥æ¾ç¤ºã
A: å¯¹äº modules å packagesï¼å¦çåºè¯¥ç¥é package åªæ¯æ init.py file ç directoryãå½ import package æ¶ï¼Python è¿è¡ init.pyãä½ å¯ä»¥å¨é£éæ¾ import statementsï¼è®© submodule contents å¨ package level å¯ç¨ââè¿å°±æ¯ä¸ºä»ä¹è½ from mypackage import MyClass èé full pathã
B: if name == âmainâ guard 对 reusable modules å¿ ä¸å¯å°ãå½ file ç´æ¥è¿è¡æ¶ï¼name æ¯ âmainâãå½è¢« import æ¶ï¼name æ¯ module ç file nameãGuard 鲿¢ test code æ demo å¨è¢«å¦ä¸ä¸ª script import æ¶æ§è¡ã
A: Random module å¨ practical questions ä¸ç»å¸¸æµè¯ãrandom.randint(a, b) è¿åå
æ¬ä¸¤ç«¯ç¹ç integerãrandom.choice(seq) ä» sequence 䏿ä¸ä¸ª elementãrandom.shuffle(lst) in-place shuffle listãrandom.sample(population, k) è¿å k 个 unique elementsï¼ä¸ä¿®æ¹ originalã
B: å¯¹äº datetime moduleï¼è®¡ç®ä¸¤ä¸ª dates é´ difference æ¯ practical skillã两个 date objects ç¸åç»åº timedeltaï¼.days ç»åºå¤©æ°ãå° timedelta(days=30) å å° date ç»åº 30 天åç dateââ对 deadline calculations 徿ç¨ã
A: æ´å¹¿ä¹å°è¯´ comprehensionsãDictionary comprehension å¦ {k: v for k, v in items if v > 0} å¨ä¸ä¸ª expression 䏿¢ filter å transformãSet comprehension ç¨ curly braces èªå¨ deduplicateãè¿äºä¸åªæ¯ syntactic sugarââå¾å¾æ¯ equivalent loop code æ´å¿«ã
B: Nested comprehensions ä¹å¼å¾æ³¨æã[[0]*cols for _ in range(rows)] æ£ç¡®å建 2D matrixââæ¯ä¸ª row æ¯ separate listãNaive [[0]*cols]*rows çèµ·æ¥ç±»ä¼¼ï¼ä½å建ç rows 齿¯ same objectï¼æä»¥ modify ä¸ä¸ª row ä¼ modify ææã
A: è¿æ¯ä¸ªå¾å¥½ç exam trapãåå ä¸ä¸ªï¼shallow copy vs deep copyãlist2 = list1[:] æ list(list1) å建 shallow copyââouter list æ¯ newï¼ä½ nested objects ä» sharedãcopy.deepcopy(list1) recursively copy ä¸åï¼æä»¥ nested lists å®å
¨ independentã
B: èè¯ prep çæåå²åºââpicklingãpickle.dump(obj, file) åºååå° binary fileï¼pickle.load(file) ååºååãå®è½ handle å ä¹ä»»ä½ Python objectï¼å
æ¬ custom class instancesãä½ç»ä¸è¦ä» untrusted sources unpickleââdeserialization æ¶å¯è½ execute arbitrary codeã
A: JSON serialization æ´ safe å portableãå¯ä¸ limitation æ¯ JSON åªæ¯æ basic typesï¼strings, numbers, lists, dicts, booleans, Noneãå¦æä½ éè¦ serialize custom objectï¼å¿ é¡» subclass json.JSONEncoder å¹¶ override default() method å custom encoderã
B: 好äºï¼æç»ä¸ª high-level exam strategyãå½»åºææ¡ data typesãè½åä¸ä¸ªæ inheritance ç classï¼override str åè³å°ä¸ä¸ª other special methodãè½ from scratch å generatorãdecorator å context managerï¼èä¸ lookup ä»»ä½ä¸è¥¿ã
A: å¯¹äº practical coding sectionsï¼å§ç»å¨ file å database operations å¨å´ handle exceptionsï¼å§ç»ç¨ with-statements å ³é resourcesï¼å¹¶ mentally test outputââå¨å final answer å line by line trace codeãè¿äº habits åºå good scores å great onesã
B: æåä¸ç¹ââos.walk() function ææç¨ï¼å¸¸åºç°å¨ file system questionsãå®ä¸º tree ä¸çæ¯ä¸ª directory yield ä¸å ç»ï¼dirpath, dirnames, filenamesãä½ å¯ä»¥ç¨ for loop over os.walk() å¨ä¸è¡ code ä¸ recurse æ´ä¸ª folder structureã
A: å®ç¾çç»æè¯ãèè¯å¥å±é£äºè½è¯»æé®é¢ãè¯å« right module å patternï¼å¹¶é«æå cleanãcorrect code çå¦çãMaster standard libraryï¼çè§£ Python object model å¦ä½çæ£å·¥ä½ï¼ä½ ä¼å¨ 08074 ä¸è¡¨ç°å¾å¥½ã大家好è¿ã
