012’314$.&5’ 6’70.858’#%0/’ - · pdf fileo5&5y#f’...
TRANSCRIPT
!"#$%&'()*+,'-./#012'314$.&5'
6'70.858'#%0/'
!5#5/'9/:75/'
6;/.2')<<='
!"#$%&'
•! >#1/#58'?54'@A=A'B"'C0.8%'D1&'E%FF0G'
–!H./F#';0B2.4'/5251F5'H5B'@AA@'%&'I>JKJ9'
–!L&858'1F'F4/.;M&7'21&70175'N%/'6G%5B1'
–!O5&5D%25&#'?.4#1#%/'H%/'P.N5'(O?HP,'
•! C%%725Q'R%;5Q'!2%&5Q'!.S1/Q'31.2G1&Q'
O.#9%//5&#Q'T1$%%Q'K6>6Q'U'
•! !"#$%&'J&$1&45G5&#'!/%;%F12'(!J!,'
•! H/55'F%VW1/5Q'X!1F412'%N'#$5')<<<FX'
O5&5Y#F'
•! Z%GB.&1M%&'%N'7%%8'.851F'N/%G'%#$5/'
21&70175F'['ZQ'Z\\Q'3%8021Q'6OZQ'L4%&Q'U'
•! L/;/5#5/'1;;/%14$Q'&%'5S;2.4.#'#";.&7Q'
G5G%/"'G1&175G5&#Q'Y/F#]421FF'%B^54#'
G%852Q';%/#1B.2.#"'%N'F%0/45'1&8'B"#5'4%85Q''
.&]B0.28'G%8025'8%40G5M%&'
•! XO1_5/.5F'.&420858X'
–!!21`%/G]&50#/12'F"F#5G'4122FQ'B0.2#].&'F#1&81/8'
2.B/1/"'(&5#W%/aQ'Y25FQ'CILQ'81#1B1F5FQ'U,'
•! L/14MD5'G%85'DF*'F4/.;#'G%85'
!"#$%&'P1&70175'
•!351&W$.25'N%40F'%&'F#1B.2.#"'%N'21&70175'
•! J-JET9bLKC'.F'1&'%B^54#'
–!-1/.1B25FQ'4%&F#1&#FQ'#";5FQ'N0&4M%&FQ'U'
•! J-JET9bLKC'$1F'1'&1G5F;145'
•! J-JET9bLKC'41&'B5';/.:'1&8'.&#/%F;54#58'
•! ?"&1G.4'#";.&7Q'F#1M4'F4%;.&7'
•! !%W5/N02'B0.2#].&'81#1'#";5Fc'F#/.&7FQ'&0G5/.412'
#";5FQ'2.F#FQ'8.4M%&1/.5FQ'B%%251&Q'U'
•! >;54.12M5Fc'>>>, self, global, ….
!"#$%&'P1&70175']'>#/04#0/5'
•! ?5Y&.M%&F'1&8'F#1#5G5&#F'41&'B5'4%GB.&58'
#%'1&'.G;%/#1B25'!"#$%&'
–!?%_58'G%8025'&1G5F'N%/'()*+),&'4%&45;#'
–!LG;%/#'#5F#'d'H/%G'#5F#'.G;%/#'S'd'H/%G'#5F#'
.G;%/#'e'd'LG;%/#'#5F#'1F'#$595F#'
•! L&85M%&'#%'F$%W'B2%4a'F#/04#0/5'
•! Z21FF5F'
–!def [methodName] (self, …):
–!Z%&F#/04#%/'85&%#58'B"'__init__'G5#$%8'
–!global'F#1#5G5&#''
!"#$%&'P1&70175'
•! Z%&#/%2'F#/04#0/5F'(if, while, ...,'
–!Z%2254M%&'.#5/1#%/'(for,'
–!try: … / except: …'F#1#5G5&#F'
•! K%'FW.#4$'F#1#5G5&#'
–!L&F#518'0F5'%N'if…elif…elif…else
–!>55'!J!f@<f'N%/'.&]85;#$'8.F40FF.%&'
!"#$%&'P1&70175']'Z%2254M%&F'
•! >#/.&7Q'2.F#FQ'1&8'#0;25F'1/5'-&.$&/*&-'
•! P.F#F'['?"&1G.4'1//1"F'(.&85S.&7Q'F0B]/1&75F,'
–!>.G.21/'#%'!1F412'1//1"F'
–!30#1B25'4%2254M%&'%N'81#1'%N'#$5'F1G5'#";5'
•! 90;25F'['2.7$#]W5.7$#Q'.GG0#1B25'2.F#F'
–!>.G.21/'#%'!1F412'/54%/8F'%/'Z'F#/04#F'
–!LGG0#1B25'4%2254M%&'%N'81#1'%N'8.g5/5&#'#";5'
•! ?.4M%&1/.5F'['6FF%4.1MD5'1//1"F'
–!h5"F'G0F#'B5'.GG0#1B25'
!"#$%&'P1&70175']'Z%2254M%&F'
•! Z%2254M%&'.#5/1#%/'for item in coll:
–!?.4M%&1/"Q'H.25'1&8'>#/.&7'1/5'.#5/1#%/F'
•! >2.4.&7'
•! K5FM&7'
•! >.&725].#5G'#0;25'
!"#$%&'P1&70175']'68D1&458'
•! C5&5/1#%/'N0&4M%&'['/5#0/&F'1&'.#5/1#%/''
–!def generateItems(seq):
for item in seq: yield 'item: %s' % item
•! P.F#'4%G;/5$5&F.%&'
•! 9$5/5'.F'F%G5'G%/5'U''(!"#$%&'@<@Q'B%%aF,'
E0&&.&7'!"#$%&'4%85'
•! L/;/5#5/'DF*'Z%G;.25/'8.F40FF.%&'
•! >%0/45'4%85'.F'4%G;.258'#%'F%G5'a.&8'%N'B"#5'
4%85'1&8'5S540#58'B"'1'D./#012'G14$.&5'
–!Z!"#$%&c'>%0/45'4%85']i'!"#$%&'B"#5'4%85'
•!-3'W/._5&'.&'ZQ'F#1&81/8'.G;25G5M%&'
–!j"#$%&c'>%0/45'4%85']i'j1D1'B"#5'4%85'
•! j-3'1F'/0&MG5'5&D./%&G5&#'
–!L/%&!"#$%&c'>%0/45'4%85']i'LP'(k*KJ9X,'B"#5'4%85'
•! (k*KJ9X,'ZPE'1F'/0&MG5'5&D./%&G5&#'
•! !"!"c'E0&MG5'5&D./%&G5&#'W/._5&'.&'!"#$%&'
>#1/M&7'Z!"#$%&'G1.&(,''''0"#$%&-1(234"/5*' l.&31.&(,''''67189/0)9/5*'
!"m31.&(,'''0"#$%&-10)9/5*'
!"mL&.M12.n5(,''''6234"/1(234"/:$/5*'
!">"Fm>5#6/7D(,'''6234"/1-2-!"#$%&5*'
!"E0&m>.G;25>#/.&7H217F(,'
6234"/1(234"/:$/5*'
E0&3%8025(,'''0"#$%&-10)9/5*'
!"E0&m6&"H.25JSH217F(,'
6234"/1(234"/:$/5*'
!"E0&mL/14MD5P%%;H217F(,'
!"E0&mL/14MD5o&5H217F(,'
python -c
python -m
python f.py python
!"E0&m>.G;25H.25JSH217F(,'
U'
!"E0&mH.25JSH217F(,'
U'!"!1/F5/m6>9H/%GH.25(,'
/0&m;"4mY25(,'
Z!"#$%&'Z%G;.25/'p'L/;/5#5/'
85N'N(,c'
'''''1QBqBQ1'
''''';/.&#'rb522%k'
Source code
(foo.py)
Z6PPmHIKZ9LoK'
!o!m9o!'
Eo9m9lo'
!ELK9mL9J3'
***'
Python byte code
Z%G;.25/'
L/;/5#5/'
62;<=&*3>'-3)*+'
Abstract
Syntax Tree
iii';/.&#'rb522%k'
Interactive mode
sftA)=@stA+u
<=A+u)<Af=t+
uA)f=@)A=AsA'
foo.pyc
Z!"#$%&')*+'
•! !1/F5/'#/1&FN%/GF''#$5'F#/.&7F'%N'#%a5&F'.&#%'1'
4%&4/5#5'F"S'#/55'(JZ>9,'
–!P5S5/'1&8'PP(@,';1/F5/'
•! 9/1&FN%/G5/';14a175'#$5&'#/1&F21#5F'#$.F'.&#%'1'
G%/5'75&0.&5'6>9'(compiler.transformer,'
•! L&;0#'#%'B"#5'4%85'4%G;.25/'.&'compile.c'
–!O"#5'4%85'.F'75&5/1#58'B"';1/F.&7'#$.F'6>9'
–!-.F.#%/';1_5/&'122%WF'$%%a.&7'.&'%;MG.n1M%&F'
•! Z%G;.21M%&'/5F02#'N%/'.G;%/#58'4%85''
(&%#'#%;]25D52'Y25,'.F'F#%/58'.&'.pyc Y25'
!"#$%&'6>9'(!"#$%&*1F82,'
•! E5;/5F5M%&'%N'#$5';/%7/1G'W.#$%0#'4%85'
•! 6F'0F012Q'5D5/"'&%85'.&'#$5'6>9'/5;/5F5&#F'1'
F"M4'4%&F#/04#'
–!9/55'/%%#'.F'#$5'Module'%B^54#'
–!>#1#5G5&#F'(LNQ'l$.25Q'l.#$Q'!/.&#Q'Z21FFQ'C2%B12Q'
E5#0/&Q'E1.F5Q'LG;%/#Q'JS54Q'U,'
–!JS;/5FF.%&F'(O.&o;Q'?.4#Q'T.528Q'>#/Q'U,'
–!>;54.12.n58'#";5F'(5S45;#$1&825/Q'12.1FQ'F2.45Q'U,'
!"#$%&'-3'
•! -./#012'G14$.&5';1/#'%N'./;/5#5/'5S540#5F'
!"#$%&'B"#5'4%85'
–!>.G;25'F#14a'G14$.&5'
–!PyObject*'F#14a'['B"#5'4%85F'%;5/1#5'%&'%B^54#F'
•!>#14a'N/1G5F'1/5'122%41#58'%&'#$5'$51;'
–!Z'F#14a'N/1G5F';%.&#'#%'$51;'F#14a'N/1G5F'
•! >%G5'$.7$]25D52'B"#5'4%85F'(X!ELK9X,'
•! -3'a&%WF'&51/2"'&%#$.&7'1B%0#'Z'
/5;/5F5M%&'%N'F;54.Y4'!"#$%&'#";5F'
•! !"#$%&'%B^54#F'a&%W'&%#$.&7'1B%0#'#$5'-3'
oB^54#F'.&'#$5'E0&MG5'•! JD5/"'!"#$%&'%B^54#'.&F#1&45'$1F'1'4%//5F;%&8.&7'
Z'#";5'.&F#1&45'
–!JD5&'B1F.4'#";5F'1/5'122%41#58'%&'#$5'$51;'
–!622'Z'#";5F'4%.&'PyObject_HEAD'F#/04#'G5GB5/F'(5*7*'F55'intobject.h / object.h,'
–!E0&MG5'41&'#$5/5N%/5'#/51#'5D5/"'!"#$%&'%B^54#'1F'
D1/.1B25'%N'#$5'#";5'PyObject*
–!PyObject_HEAD 4%.&F'&0GB5/'%N'/5N5/5&45F'
%&'#$5'%B^54#'(ob->ob_refcnt)
•! Z'G%8025F'&558'#%'0F5'Py_INCREF(obj)'1&8'
N/.5&8F
oB^54#F'.&'#$5'E0&MG5'
•! ob_type'G5GB5/'%N'PyObject_HEAD $%28F';%./'#%'PyTypeObject'F#/04#'
–!?5#5/G.&5F'Z'N0&4M%&F'#%'4122'%&'14MD.M5F'W.#$'
#$1#'%B^54#'['32(&'!&34"#-'
–!>%G5'%;5/1M%&F'1/5'&%#'N51F.B25'N%/'F%G5'#";5F'
PyTypeObject PyInt_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "int",
sizeof(PyIntObject), 0, (destructor)int_dealloc, /* tp_dealloc */ (printfunc)int_print, /* tp_print */ 0, /* tp_getattr */
0, /* tp_setattr */ (cmpfunc)int_compare, /* tp_compare */ …
L/;/5#5/'P%%;'(45D12*4,'
•! O.7'FW.#4$'F#1#5G5&#Q'W%/a.&7'%&'1&'.&4%G.&7'
PyFrameObject*'F#/04#0/5'
–!31&"'%;4%85'.G;25G5M%&F'4122'Z'$52;5/'
N0&4M%&F'(F55'PyEval_EvalFrameEx)'
•! H%/'5D5/"'B"#5'4%85'.&F#/04M%&Q'G1&175G5&#'
%N'/5N5/5&45'4%0&M&7'&55858'
•! H5W'B"#5'4%85';/58.4M%&'G54$1&.FG'
–!J*7*c'7;06?@AB;6'%V5&'N%22%W58'B"'CD06BEFB>'
–!>0445FFN02'./;/5#5/';/58.4M%&'G.7$#'2518'#%'
F0445FFN02';/%45FF%/'B/1&4$';/58.4M%&'
H/1G5'oB^54#F'
•! PyFrameObject']'1/70G5&#'N%/'./;/5#5/'
•! Z%.&F'41225/'N/1G5Q'4%85Q'D1/.1B25FQ'1&8'/5#0/&'188/5FF'
•! JS540#58'B"'#$5'./;/5#5/'2%%;'
•! E5;/5F5&#F'1&'1&%&"G%0F'*"#&'"<=&*3'9/'&G&*$H"/'
–!H0&4M%&'4122F'1/5'G1;;58'#%'N/1G5F'
–!!1/1G5#5/F'%N'N0&4M%&'4122F'1/5'G1;;58'#%'2%412'
D1/.1B25F'.&'1'N/1G5'
–!H0&4M%&F'1/5'1';/%7/1GG.&7'21&70175'4%&F#/04#Q'
.&85;5&85&#'N/%G'N/1G5'4%&45;#'
H0&4M%&'%B^54#F'
•! H0&4M%&'85Y&.M%&'(def,'B.&8F'N0&4M%&'&1G5'
.&'2%412'&1G5F;145'#%'N0&4M%&'%B^54#'
•! H0&4M%&'%B^54#F''1/5'Y/F#'421FF'%B^54#F'
•! Z%.&F'85N102#'D1205'1/70G5&#F'
–!Z%G;0#58'1#'85Y&.M%&'MG5Q'W$.4$'.F'/525D1&#'
W$5&'0F.&7'G0#1B25'%B^54#F'
•! H0&4M%&F'F#%/5'#$5./'B%8"'1F'4%85'%B^54#'.&'
#$5'I$/*B*"#&'1_/.B0#5'
Z%85'%B^54#F'
•! LGG0#1B25'%B^54#'/5;/5F5&M&7'5S540#1B25''
B"#5'4%85'
–!*"B/)!&c'H0&4M%&'&1G5'
–!*"B/%"*)%-J'*"BK):/)!&-c'P%412'D1/.1B25F'
–!*"B/)!&-c'K1G5F'0F58'.&'#$5'B"#5'4%85'
–!*"BI:&&K):-c'K1G5F'%N'N/55'D1/.1B25F'
–!*"B*"#&J'*"B*"/-3-J'*"BL%&/)!&J'*"BL:-3%9/&/"J'M'
•! Z%.&F'&%'/5N5/5&45'#%'G0#1B25'%B^54#F'
•!3%8025F'1&8'./14MD5'G%85'/52"'%&'
F5;1/1M%&'%N'4%85'1&8'N0&4M%&F'
!"#$%&'O"#5'Z%85'
•! ?%40G5:'.&'DIS'G%8025'
•! >;54.12'#5/G.&%2%7"'
–!N;Oc'9%;]%N]F#14a'.#5G'
–!N;OPc'>54%&8'#%;]G%F#'F#14a'.#5G'
–!N;OQc'9$./8'#%;]G%F#'F#14a'.#5G'
•! o;5/1M%&F'&%/G122"'#1a5'#%;'.#5G(F,'N/%G'F#14a'1&8';0#'B14a'#$5'/5F02#'.#5G'
•! O1F.4'F#14a'%;5/1M%&F'1/5'.&2.&5'Z'4%85'
•! O1F.4'%;5/1M%&F'%&';/.G.MD5'#";5F'1/5'0F0122"'#$/518]F1N5'
O1F.4'>#14a'o;5/1M%&'
•! 6;6BN;6c'E5G%D5'N;O'
–!LG;2.5F'854/51F.&7'%N'9o>'/5N5/5&45'4%0/'
•! @;NBN8;J'@;NBNR@AAJ'@;NBF;D@'
–!E%#1#5'0;'#$5'#%;]G%F#'F#14a'.#5GF'
–!5*7*'#0;25'0&;14a.&7'c'a,b=b,a'
•! SD6BN;6c'?0;2.41#5'9o>'/5N5/5&45'
•! I&1/"'%;5/1M%&F'%&'9o>'(5*7*'DT?@UB6;OENEVA,'
•! O.&1/"'%;5/1M%&F'%&'9o>'1&8'9o>@'
(WET?@UB6;8A@J'B0DXNE6XUJ'BSEVESAJ'MY'
-1/.1B25F'
•! ?.4M%&1/"'N%/'D1/.1B25F'.&'1'F4%;5'
–!P%%a0;'N%/'XSX'&558F'#%'4$54a'.&'2%412'F4%;5Q'
72%B12'F4%;5'1&8'B0.2#].&'F4%;5'
•! P%412'D1/.1B25F'F#1M4122"'854.81B25'B"'4%G;.25/'
–!E025c'622'1FF.7&58'D1/.1B25F'1/5'2%412''
(1FF.7&G5&#'%;5/1#%/Q'.G;%/#,'
–!Z1&'B5'1445FF58'B"'.&85SQ'.&F#518'%N'8.4#'2%%a0;'
x = 1
def f(): y = x+1
-1/.1B25F'•! ON;@AB1X;?SB1SAXANABZX;W?X'/)!&'
•! 6445FF'#%'72%B12'D1/.1B25F'
•! ON;@AB'1'X;?SB'1'SAXANABF?ON'K):/$!'–!H1F#'1445FF'B"'0F.&7'1//1"'%N'2%412'D1/.1B25F'–!IF5F'*"BK):/)!&-[K):B/$!\'1//1"'N/%G'4%85'%B^54#'
•! ON;@AB'1'X;?SB'1'SAXANABT?0A'/)!&9'–!IF58'W$5&'F4%;5'.F'&%#'85#5/G.&1B25'(5*7*'9!(":3'.&'N0&4M%&,'
–!Z%85'%B^54#'$1F'*"B/)!&-'2.F#'W.#$'&1G5'.&8.45F'–!Z%G;.25/F'0F5F'emH6>9'd'emCPoO6P'W$5&5D5/';%FF.B25''
•! ON;@AB'1'X;?SB'1'SAXANAB?NN@'/)!9'•! 6_/.B0#5F'&1G5F'1/5'12F%'F#%/58'.&'*"B/)!&-'2.F#'
•! X;?SB'17;TON'*"/-H'–!E52.5F'%&'*"B*"/-3-[*"/-H\'2.F#'%N'4%&F#1&#F'.&'4%85'%B^54#'
L&]!2145'd'>2.45F'
•! L&];2145'%;5/1M%&F'1/5'2.a5'B.&1/"'%;5/1M%&FQ''
B0#'85G1&8'1'vF52N]G0#1B25v'%B^54#'%&'9o>@'
–!ET6X?7AB6;8A@J'ET6X?7AB0DXNE6XUJ'M'
–!9o>@'#$5&'B54%G5F'&5W'9o>''
–!H%/'%;5/1M%&F'F04$'1F'+=, -= (F55'!J!')<f,'
•! >2.45'%;5/1M%&F'
–!OXE7A]^c''9o>q9o>wcx'
–!OXE7A]Pc''9o>q9o>@w9o>cx'
–!OXE7A]Qc''9o>q9o>@wc9o>x'
–!OXE7A]_c''9o>q9o>)w9o>@c9o>x''
>2.45F'd'P.F#F'
•! >2.45'1FF.7&G5&#'
–!Z$1&75F'9o>'d'9o>@'d'9o>)'.&];2145'
–!ON;@ABOXE7A]^c'9o>wcxq9o>@'
–!ON;@ABOXE7A]Pc'9o>@w9o>cxq9o>)'
–!SAXANABOXE7A]U'
–!ON;@ABODWO7@c'9o>@w9o>xq9o>)'
–!SAXANABODWO7@`'852'9o>@w9o>x'
•! Z%2254M%&'#";5F'.&'!"#$%&'1/5'4$51;'1&8'N1F#'y'
!/.&M&7'
•! 6@ETNBAa6@'c'LG;25G5&#F'5S;/5FF.%&'
F#1#5G5&#'N%/'./14MD5'G%85'
•! 6@ETNBENA0c''!/.&#'9o>'#%'sys.stdout
–!6@ETNBENA0BN;c'!/.&#'9o>@'#%'9o>'Y25]2.a5'%B^54#'
–!K558F'#%'4%&F.85/'I&.4%85'1&8'F%V'F;145'
•! 6@ETNBTA8XETAJ'6@ETNBTA8XETABN;'
Z%&#/%2'>#/04#0/5F'
•! W@A?bBX;;6J'7;TNETDABX;;6`''
J&8F'#$5'40//5&#'B2%4a'
•! @AND@T'BV?XDA`''
E5#0/&'W.#$'9o>'#%'#$5'41225/'%N'1'N0&4M%&'
•! UEAXSBV?XDA`''
E5G%D5'9o>'1&8'".528'.#'N/%G'1'75&5/1#%/'
•! ATSBFET?XXU`'L/;/5#5/'#$5&'5.#$5/'/5]/1.F5F'
5S45;M%&Q'/5#0/&F'N/%G'N0&4M%&'%/'4%&M&05F'
•! CD06BF;@8?@S'#&%3)J'CD06BEFBN@DA'#&%3)J'
CD06BEFBF?XOA'#&%3)J'CD06B?WO;XDNA'3):,&3'
?./54#2"'G1;;58'4%&45;#F'
•! AaA7BON0Nc'/0&'!"#$%&'4%85'
•! XEONB?66ATS`'N1F#'2.F#'4%G;/5$5&F.%&'
•! E06;@NBON?@c'N/%G'wG%8025z9o>x'.G;%/#'e'
•! DT6?7bBOAcDAT7A'*"$/3c'I&;14a'9o>'
•! F;@BENA@'c'9/51#'9o>'1F'.#5/1#%/Q'4122'/&G3dY'
G5#$%8Q';0F$'".52858'D1205'%&'F#14a'
•! @?EOABV?@?@ZOc'E1.F5F'1&'5S45;M%&Q'
;1/1G5#5/F'1/5'%&'F#14a'
?./54#2"'G1;;58'4%&45;#F'
•! WDEXSBND6XA'/'
–!Z/51#5'#0;25'%N'&'#%;]G%F#'.#5GF'1&8';0F$'/5F02#''
•! WDEXSBXEON'/'
•! WDEXSB0?6'
–!Z/51#5'5G;#"'8.4M%&1/"'%&'#$5'F#14a'
•! WDEXSB7X?OO'`'Z/51#5F'1'&5W'421FF'%B^54#'
–!9o>c'?.4M%&1/"'%N'G5#$%8F'
–!9o>@c'90;25'%N'B1F5'421FF'&1G5F'
–!9o>)c'Z21FF'&1G5'
Z6PPmHIKZ9LoK'1/74'
•! 7?XXBFDT7NE;T'):,*'–!):,*'2%W'B"#5'4%.&F'&0GB5/'%N';%F.M%&12';1/1G5#5/F'
–!):,*'$.7$'B"#5'4%.&F'&0GB5/'%N'a5"W%/8';1/1G5#5/F'
–!!1/1G5#5/F'.#F52N'1/5'%&'#$5'F#14aQ'1V5/'#$5G'#$5'N0&4M%&'%B^54#'#%'4122'
•!0?bABFDT7NE;T'):,*'–!!0F$5F'&5W'N0&4M%&'%B^54#Q'9o>'.F'#$5'4%85Q'):,*'85N102#';1/1G5#5/F'1/5'B52%W'9o>'
•! 6&8'1'2%#'G%/5'U*'(/518'45D12*4,'
L&#/%804.&7'1'&5W'B"#5'4%85'
•! JS#5&8'%{4.12'2.F#'%N'%;4%85F''
(Include/opcode.h;
Lib/opcode.py,'
•! L&4/51F5'36CLZ'&0GB5/''
(Python/import.c,'
•! Z$1&75'6>9]iB"#5'4%85'4%G;.25/''
(Python/compiler.c,'
•! Z$1&75'B"#5'4%85'./;/5#5/''
(Python/ceval.c,'
9$/518.&7'.&'#$5'-3'
•! !"#$%&'#$/518F'1/5'#/05'o>'#$/518F'
•! C2%B12'./;/5#5/'2%4a'
–!o&2"'%&5'(!"#$%&,'#$/518'.F'/0&&.&7'./;/5#5/'
4%85'1#'#$5'F1G5'MG5'
–!E57021/'4%S#'FW.#4$'1V5/'1'&0GB5/'%N'5S540#58'
.&F#/04M%&F'%/'W.#$'2%&7]/0&&.&7'%;5/1M%&F'
–!!/%B25G'W.#$'G02M]4%/5'Z!IvF'
–!E5251F58'N%/'2%&7]/0&&.&7'Z'4%85'(5*7*'F"F#5G'4122,'
–!!5/N%/G1&45'18D1¯'
•! O"#5'4%85'.&F#/04M%&F'1/5'1#%G.4'
>#14a25FF'!"#$%&'
•! JD5/"'N0&4M%&'4122'4/51#5F'1'Z'F#14a'N/1G5'
–!>0B/%0M&5F'DF*'4%/%0M&5F'
•! !"#$%&'N0&4M%&F'41&'14#'1F'4%/%0M&5F'%/''
3)-+%&3-Q'4%&40//5"'5S540#58'B"'F4$58025/'
–!>0;;%/#'N%/'4$1&&52'4%GG0&.41M%&'
–!64#'1F'2.7$#W5.7$#'#$/518F'
•! E585F.7&58'./;/5#5/'2%%;'#%'1D%.8'#$5'Z'
F#14a'N/1G5'4/51M%&'%&'N0&4M%&'4122'
35G%/"'31&175G5&#'
E63' >W1;'
o;5/1M&7'>"F#5G'-33''(;175'B1F58,'
o>'G5G%/"'122%41#%/''('malloc() ,'
b51;'122%41M%&'W/1;;5/'(;"G5G*$,'
'PyMem_Alloc, PyMem_Free, ….
oB^54#'622%41#%/'(%BG122%4*4,'
PyObject_Malloc, PyObject_Free, …
oB^54#]F;54.Y4'122%41#%/F'
(5*7*'.&#%B^54#*4,'
Z'4%85'%N'./;/5#5/'d'G%8025F
C5&5/.4'%B^54#'G1&175G5&#'(%B^54#*4,
PyObject_New, PyObject_Del,…'
oB^54#'622%41#%/'
•! O"'85F.7&Q'G1&"'D5/"'FG122'122%41M%&'/5|05F#F'
–!JD5/"#$.&7'.F'1&'%B^54#'y'
•! >;54.12'%;MG.n1M%&'N%/';5/N%/G1&45''
(%BG122%4*4,'
–!E5|05F#F'i)+u'B"#5F'$1&8258'B"'malloc
–!>G1225/'/5|05F#F'F.n5F'1/5'7/%0;58'(='B"#5F'1;1/#,'
•!35G%/"';%%2F'%N'ta'25&7#$'514$'(-33';175'F.n5,Q''
W.#$'%W&'N/55'2.F#'
•!!%%2F'1/5'0F58'B"'8.g5/5&#'/5|05F#'F.n5'122%41#%/F'
•!='O"#5'12.7&G5&#'%N'/5#0/&58'188/5FF'
C1/B175'Z%2254#%/'
•! 9/18.M%&12'71/B175'4%2254M%&'(5*7*'G1/a'1&8'
FW55;,'W%028'85G1&8'1'F5#'%N'/%%#'%B^54#F'
–!JS#5&F.%&'G%8025F'41&'4/51#5'%W&'!"#$%&'%B^54#F'
–!CZ'N%/'122%41#58'Z'%B^54#F'&%#'/5122"';%/#1B25'
–!9/1D5/F.&7'122'%B^54#F'.F'5S;5&F.D5'
•! L&F#518c'>.G;25'/5N5/5&45'4%0&M&7''
–!L&'ob->ob_refcnt N/%G PyObject_HEAD
–!l%/aF'W.#$'5D5/"''malloc() / free()'
•! Py_DECREF() ]''(%B^54#*$,'
–!Z122F'Y&12.n5/'W$5&'/5N5/5&45'4%0&#'4%G5F'#%'n5/%'
C1/B175'Z%2254#%/'
•! H0&4M%&F'#$1#'4/51#5'1&'%B^54#'F5#'#$5''
ob_refcnt'#%'@Q'1&8'F#%/5'.#']'%/'85F#/%"'.#'
B"'4122.&7'Py_DECREF
–!>%G5'F#%/5'N0&4M%&F'#$5/5N%/5'8%&v#'.&4/51F5'#$5'
/5N5/5&45'4%0/'(5*7*'PyList_SetItem(),'
•! oB^54#F'41&'B5'F#04a58'.&'#/145B14aF'
•!l51a/5N'G%8025'(!J!')<+,'
–!H%/'%B^54#'414$5F'(W51a'8.4.M%&1/.5F,'
–!H%/'4./4021/'/5N5/5&45F''(?o3'&%85'/521M%&F,'
Z./4021/'E5N5/5&45F'
b518'P.F#'525G5&#'
%Bm/5N4&#q)'
P.F#'525G5&#'
%Bm/5N4&#q@'
P.F#'525G5&#'
%Bm/5N4&#q@'
b518'P.F#'525G5&#'
%Bm/5N4&#q@'
P.F#'525G5&#'
%Bm/5N4&#q@'
P.F#'525G5&#'
%Bm/5N4&#q@'
Z"42.4'C1/B175'Z%2254#%/'
•! E5N5/5&45'4"425c'I&0F58'%B^54#(F,'5D5&'
#$%07$'/5N5/5&45'4%0/'.F'&%#'n5/%'
–!95F#'.F'%&2"'/525D1&#'N%/'4%.&5/'#";5F'
•! IF175'%N'8%0B25]2.&a58'2.F#'%N'122'4%.&5/'
%B^54#F'(gc_next , gc_pref,'
–!?5#5/G.&5'122'4%.&5/F'W$.4$'1/5'%&2"'
/5N5/5&458'B"'#$5G'F52N'
•! oB^54#F'.&'4"425F'W.#$'Y&12.n5/F''__del()__
1/5'18858'#%'F5#'%N'0&4%2254#1B25'%B^54#F'
–!o/85/'%N'Y&12.n5/'4122F'.&'#$5'4"425'0&4251/'
>%0/45F'•! IF5'#$5'F%0/45Q'P0a5'(!"#$%&'>-K'#/0&aQ'31/4$')<<=,'
•! 31/a'P0#nQ'!/%7/1GG.&7'!"#$%&*'ovE5.22"')<<u'
•! $_;cddG1.2*;"#$%&*%/7d;.;5/G1.2d;"#$%&]2.F#'
•! $_;cddWWW*;"#$%&*%/7'['!J!vFQ'!"#$%&'90#%/.12Q''
JS#5&8.&7'1&8'JGB588.&7'#$5'!"#$%&'L/;/5#5/'90#%/.12Q'!"#$%&'H6}'
•! $_;cdd8%4F*;"#$%&*%/7d2.BdB"#54%85F*$#G2'
•! $_;cdd8%4F*;"#$%&*%/7d1;.d#$/518F*$#G2'
•! $_;cddWWW*D%.8F;145*%/7*0ad;"#$%&d1/M425Fd4%85mB2%4aF*F$#G2'
•! $_;cdd5~%#*%/7d;"/5Nd#";5]4%85*$#G'
•! $_;cddWWW*85DF$58*4%Gd4d1d!"#$%&db%W]!"#$%&]E0&F]!/%7/1GFd'
•! $_;cddWWW*/5SS*4%Gd�8a0$2G1&d;"#$%&m@<@d;"#$%&m@<@*$#G2'
•! $_;cdd1/4#/.S*4%Gd&1Fd;"#$%&d74d'
•! $_;cddWWW*F#1&N%/8*580d421FFd4F)t)dF2.85Fd)<<ud;"#$%&]D1&E%FF0G*;8N'