ΠΠ°ΠΉΡ ΠΊΠΎΠ΄ python: Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Python ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python / Π₯Π°Π±Ρ
ΠΠ΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π·Π°Π΄ ΠΌΠ½Π΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΡΠ·ΡΠΊΠ΅ python. ΠΡΠ° Π·Π°Π΄Π°ΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΠΈΡΠΎΠ½ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Ρ, ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΌΡ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ goto. Π‘Π»ΠΎΠΆΠ½ΡΠΉ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠ½Π΅ ΠΏΠΈΡΠ°ΡΡ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ goto Π² ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ, ΠΈ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ Π² ΠΏΠΈΡΠΎΠ½Π΅, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, Π²ΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΠΏΡΠ΅Π»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ ΠΌΠ΅Π½Ρ ΠΎΠ½ Π½Π΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π». Π‘ΡΠ°Π·Ρ Ρ ΠΎΡΡ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ, ΡΡΠΎ ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Ρ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΠ΄Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΆΠΈΠ·Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ. ΠΠ»ΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΡΠ±ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠ°Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΎΠ± ΡΡΠΎΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° goto ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅.
ΠΡΠ°ΠΊ, Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΠΈΡΠΎΠ½ ΠΏΠ°ΡΡ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΊΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΈΡ Π²Π΅ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ (ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ Π½ΡΠΆΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠ΅ΠΏΠ»ΡΡΡΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ goto ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠΊΠΈ (label), ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ dis, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΈΡΠΎΠ½Π°, ΠΈ new, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΈΡΠΎΠ½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌΡΡ Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΈΡΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ, ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΈΠ΄Π°
a:
goto a
ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΈΡΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΈΠ΄Π°
label .a
goto .a
ΠΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΎΡΠΊΠ° ΠΈΠ³ΡΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ, Ρ.ΠΊ. ΠΏΠΈΡΠΎΠ½ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠΎ ΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΠΌ ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΠΈΡΡ Π±Π΅Π· ΡΠΎΡΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΠ°ΠΊ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
>>> def f():
>>> label .a
>>> goto .a
>>> import dis
>>> dis.dis( f )
2 0 LOAD_GLOBAL 0 (label)
3 LOAD_ATTR 1 (a)
6 POP_TOP
3 7 LOAD_GLOBAL 2 (goto)
10 LOAD_ATTR 1 (a)
13 POP_TOP
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎ ΠΌΠ΅ΡΠΊΠ΅ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ LOAD_GLOBAL, LOAD_ATTR, POP_TOP, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ β ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π΅. ΠΠΎΠ΄ΡΠ»Ρ dis ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ opmap ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Ρ ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ opname.
>>> dis.opmap[ 'LOAD_GLOBAL' ]
116
>>> dis.opmap[ 'LOAD_ATTR' ]
105
ΠΠ°ΠΉΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ f Ρ ΡΠ°Π½ΠΈΡΡΡ Π² f.func_code.co_code, Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² f.func_code.co_names.
>>> f.func_code.co_names
('label', 'a', 'goto')
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π±Π°ΠΉΡΠΎΠ²ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠΎ ΠΊΡΡΠΊΡ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ LOAD_GLOBAL ΠΈ LOAD_ATTR ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΡΠ΅ΠΌΡ Π±Π°ΠΉΡΠ°ΠΌΠΈ (ΡΠ»Π΅Π²Π° ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅), ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ β Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΈΠ· opmap), Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΡΠ΅ΡΠΈΠΉ β Π΄Π°Π½Π½ΡΠ΅ (ΠΌΠ»Π°Π΄ΡΠΈΠΉ ΠΈ ΡΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ), ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ΅ f.func_code.co_names, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π°ΡΡΠΈΠ±ΡΡ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ±ΡΡΠ²ΠΈΡΡ.
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π»ΠΈΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π±Π°ΠΉΡΠ°Ρ ), ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ dis.HAVE_ARGUMENT. ΠΡΠ»ΠΈ ΠΎΠ½Π° Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅, ΡΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΈΠ½Π°ΡΠ΅ β Π½Π΅Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°Π»Π΅Π΅, Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠΊ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ NOP, Π° ΠΊΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² goto Π½Π° JUMP_ABSOLUTE, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π²ΡΠ΅. ΠΠΎΠ΄ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
import dis, new
class MissingLabelError( Exception ):
pass
class ExistingLabelError( Exception ):
pass
def goto( function ):
labels_dict = {}
gotos_list = []
command_name = ''
previous_operation = ''
i = 0
while i < len( function.func_code.co_code ):
operation_code = ord( function.func_code.co_code[ i ] )
operation_name = dis.opname[ operation_code ]
if operation_code >= dis.HAVE_ARGUMENT:
lo_byte = ord( function.func_code.co_code[ i + 1 ] )
hi_byte = ord( function.func_code.co_code[ i + 2 ] )
argument_position = ( hi_byte << 8 ) ^ lo_byte
if operation_name == 'LOAD_GLOBAL':
command_name = function.func_code.co_names[ argument_position ]
if operation_name == 'LOAD_ATTR' and previous_operation == 'LOAD_GLOBAL':
if command_name == 'label':
label = function.func_code.co_names[ argument_position ]
if labels_dict.has_key( label ):
raise ExistingLabelError( 'Label redifinition: %s' % label )
labels_dict.update( { label : i - 3 } )
elif command_name == 'goto':
gotos_list += [ ( function.func_code.co_names[ argument_position ], i - 3 ) ]
i += 3
else:
i += 1
previous_operation = operation_name
codebytes_list = list( function.func_code.co_code )
for label, index in labels_dict.items():
codebytes_list[ index : index + 7 ] = [ chr( dis.opmap[ 'NOP' ] ) ] * 7
# Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ 7 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ΄ΡΡΠΈΡ
Π±Π°ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄ LOAD_GLOBAL, LOAD_ATTR ΠΈ POP_TOP Π½Π° NOP
for label, index in gotos_list:
if label not in labels_dict:
raise MissingLabelError( 'Missing label: %s' % label )
target_index = labels_dict[ label ] + 7
codebytes_list[ index ] = chr( dis.opmap[ 'JUMP_ABSOLUTE' ] )
codebytes_list[ index + 1 ] = chr( target_index & 0xFF )
codebytes_list[ index + 2 ] = chr( ( target_index >> 8 ) & 0xFF )
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
code = function.func_code
new_code = new.code( code.co_argcount, code.co_nlocals, code.co_stacksize, code.co_flags,
str().join( codebytes_list ), code.co_consts, code.co_names, code.co_varnames,
code.co_filename, code.co_name, code.co_firstlineno, code.co_lnotab )
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
new_function = new.function( new_code, function.func_globals )
return new_function
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
@goto
def test_function( n ):
goto .label1
label .label2
print n
goto .label3
label .label1
print n
n -= 1
if n != 0:
goto .label1
else:
goto .label2
label .label3
print 'the end'
test_function( 10 )
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
10
9
8
7
6
5
4
3
2
1
0
the end
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΡΠΈΠ»Ρ ΠΏΠΈΡΠΎΠ½Π°: ΠΎΠ½ΠΎ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΡΠΈΠ»ΡΠ½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ 2.7, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΉ 2-ΠΊΠΈ), ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π΅ΡΠ΅ ΡΠ°Π· Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΡΠ·ΡΠΊΠ° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΡΠΈΠ½Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python. Π§1 / Π₯Π°Π±Ρ
ΠΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: ΠΠ°Π²Π΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ, ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΎΠ²Π»Π°Π΄Π΅Π» ΠΈ ΠΌΠ½ΠΎΠΉ, Π½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ ΡΡΠΎΠΏΠ°ΡΡ Π² Π½ΡΠΌ ΠΈ Π½Π΅ Π·Π°ΠΊΠΎΠΏΠ°ΡΡΡΡ ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ Π²ΡΠ»Π΅Π·ΡΠΈ. ΠΠ°ΠΉΠ΄Ρ Π΄Π»Ρ ΡΠ΅Π±Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», Ρ ΡΠ΅ΡΠΈΠ» Π·Π°Π±ΠΎΡΠ»ΠΈΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Ρ Π°Π±ΡΠΎΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ (ΠΌΠΎΡ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, ΠΏΡΠΎΡΡ Π½ΠΎΠ³Π°ΠΌΠΈ ΡΠΈΠ»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΈΠ½Π°ΡΡ). Π’Π΅ΠΌ, ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ Python ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΡΠΎΡΡ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ° Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° byterun, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΈΡΠΎΠ½ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ Π±Π°ΠΉΡΠΊΠΎΠ΄Π°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. Π Π°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π±ΡΠ»Π° Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π·Π°Ρ
Π²Π°ΡΡΠ²Π°ΡΡΠ΅ Π²Π΅ΡΡΠ»ΠΎΠΉ ΠΈ ΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ. Π― Π±ΡΠ» Π±Ρ ΡΠ°Π΄, Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ ΡΠΎΠΆΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΡΠΊΠ°Π»ΠΈ. ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΈΡΡΡ, ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ python, ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΌΡ Π·Π½Π°Π»ΠΈ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈ Ρ ΡΠ΅ΠΌ Π΅Π³ΠΎ Π΅Π΄ΡΡ.
Π― ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ, ΡΡΠΎ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΠΈ Ρ ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ° Π½Π°Π·Π°Π΄. ΠΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ python, Π½ΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ΅Π±ΠΎΠ»ΡΡΠ°Ρ Π·Π°ΠΌΠ΅ΡΠΊΠ°: Π― ΡΠ°Π±ΠΎΡΠ°Ρ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 2.7 Π² ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅. Π’ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΡΡΠΈ ΡΡ ΠΎΠΆΠ° ΡΠΎ Π²ΡΠΎΡΠΎΠΉ, Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡΡ , Π½ΠΎ Π² ΡΠ΅Π»ΠΎΠΌ Π²ΡΡ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ python?
ΠΡ Π½Π°ΡΠ½ΡΠΌ Ρ ΠΎΡΠ΅Π½Ρ (ΠΎΡΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ) Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ. Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ Π² Π²Π°ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅?
~ $ python
Python 2.7.2 (default, Jun 20 2012, 16:23:33)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = "hello"
ΠΠΎΠ΄Ρ ΠΈΠ΄ΡΡ, Π»Π΅Π΄ΡΠ½ΠΊΠΈ ΡΠ°ΡΡ, ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄Ρ ΠΏΠΈΠ»ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΡΠ΄ΡΠΎ, Π° 64 Π±ΠΈΡΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π±Π΅Π· ΡΡΡΠ°Π»ΠΈ ΡΡΡΠ΄ΠΈΡΡΡ, ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π³Π°: Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΏΠ°ΡΡΠΈΠ½Π³, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ. ΠΠ°ΡΡΠ΅Ρ Π·Π°Π±ΠΈΡΠ°Π΅Ρ ΡΠΊΠΎΡΠΌΠ»Π΅Π½Π½ΡΠ΅ Π΅ΠΌΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ ΠΈΡ ΡΠ²ΡΠ·Ρ ΡΠΎΡΠΌΠΈΡΡΡ AST( ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠ΅ΡΠ΅Π²ΠΎ). ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ AST Π² ΠΎΠ΄Π½ΠΈ (ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ) ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΠ΄Π° (Π±Π°ΠΉΡΠΊΠΎΠ΄ + ΠΎΠ±Π²ΡΠ·ΠΊΠ°). ΠΠΎΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
Π― Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅, ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΡΠ°ΠΌ ΠΏΡΠΎ ΡΡΠΈ Π²Π΅ΡΠΈ Π½ΠΈ ΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ, Π½ΠΎ Π½Π΅ ΡΠ½ΡΠ²Π°ΠΉΡΠ΅: Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠΎ, ΠΏΠΎΡΡΠ°ΡΠΈΠ² ΡΠ°ΡΠΎΠ² ΡΡΠ°ΠΊ ΠΏΡΡΡΠ΄Π΅ΡΡΡ. ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠΈ ΡΠ°Π³ΠΈ ΠΏΡΠΎΡΠ»ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π° ΡΡΠΊΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ python ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π΄Π΅Π»Ρ, Ρ Ρ ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΊΡ: Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΎΠΏΠΈΠΊΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΈ Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅. ΠΡΠΎ Π²ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½ΡΠΌ Ρ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π½ΠΈΠΊΠ°ΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΎ Π² Π½ΠΈΡ , ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π½ΠΎ Ρ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΡ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π° β ΡΡΠΎ Π΄Π²Π΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°Π·Π½ΠΈΡΡ, Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΠ°ΠΌΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅.
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡ Π½Π°Π²Π΅ΡΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎ Β«ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈΒ». ΠΡΠΎ Π²Π΅ΡΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ΄ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ: Β«Π€ΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°Β». ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠΈΠΌ ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅:
>>> def foo(a):
... x = 3
... return x + a
...
>>> foo
<function foo at 0x107ef7aa0>
Β«Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ MyObject ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π Π°Π· foo ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅Π³ΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡ Π΅Π³ΠΎ (Π² ΡΡΠΎΠΌ ΠΈ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ foo() ΠΈ foo). ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄Π°ΡΡ foo ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° foo ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅ΠΉ:
>>> def foo(a):
... x = 3
... return x + a
...
>>> foo
<function foo at 0x107ef7aa0>
>>> foo.func_code
<code object foo at 0x107eeccb0, file "<stdin>", line 1>
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π² Π²ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π° ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΈΡΠΎΠ½ΠΎΠ²ΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ΄Π°:
>>> dir(foo.func_code)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename',
'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals',
'co_stacksize', 'co_varnames']
ΠΠ΄Π΅ΡΡ ΡΠ΅Π»Π°Ρ ΠΊΡΡΠ° Π½ΠΈΡΡΡΠΊΠΎΠ², Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½ΠΌ ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° foo.
>>> foo.func_code.co_varnames
('a', 'x')
>>> foo.func_code.co_consts
(None, 3)
>>> foo.func_code.co_argcount
1
ΠΠΎΡ ΡΡΠΎ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ: ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎ ΠΌΡ Π²ΡΡ Π΅ΡΡ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½ΠΈ ΡΠ΅Π³ΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ Π±Π°ΠΉΡΠΊΠΎΠ΄ΠΎΠΌ ΡΡΡΠ»ΠΊΠ°, ΠΊΡΡΠ°ΡΠΈ ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ΄Π°:
>>> foo.func_code.co_code
'd\x01\x00}\x01\x00|\x01\x00|\x00\x00\x17S'
ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Ρ ΡΡΠΎ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π° ΡΡΠΎ Π½Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅. ΠΠ°ΠΉΡΠΊΠΎΠ΄ ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ². Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ Π±Π°ΠΉΡΠΊΠΎΠ΄? ΠΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ Π±Π°ΠΉΡ. ΠΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΡΡΠ°Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π±Π°ΠΉΡΠΎΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π° Π΄ΡΡΠ³ΠΈΠΌ Π½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠ²Π΅Π΄Π΅ΠΌ ΠΈΡ ΠΊΠ°ΠΊ ΡΠΈΡΠ»Π°.
>>> [ord(b) for b in foo.func_code.co_code]
[100, 1, 0, 125, 1, 0, 124, 1, 0, 124, 0, 0, 23, 83]
ΠΠΎΡ Π±Π°ΠΉΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΡΡΡ Π²ΡΡ ΠΌΠ°Π³ΠΈΡ. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π±Π΅Π·ΡΡΡΠ°Π½Π½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π±Π°ΠΉΡΡ, ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΉΡΠΈ Π΅ΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Cpython Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ceval.c ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅.
ΠΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡΠΊΠΎΠ΄Π°
ΠΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²Π·ΡΡΡ Π²ΡΠ΅ ΡΡΠΈ Π±Π°ΠΉΡΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΠΎ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΡΡΠΎ ΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΈ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΏΠΎΠ½ΡΡΡ. ΠΡΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΏΠΈΡΠΎΠ½Π°. Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ β ΠΌΠΎΠ΄ΡΠ»Ρ dis. ΠΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ dis.dis ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π°ΡΠ° foo.
>>> def foo(a):
... x = 3
... return x + a
...
>>> import dis
>>> dis.dis(foo.func_code)
2 0 LOAD_CONST 1 (3)
3 STORE_FAST 1 (x)
3 6 LOAD_FAST 1 (x)
9 LOAD_FAST 0 (a)
12 BINARY_ADD
13 RETURN_VALUE
ΠΠ΅ΡΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎ ΡΡΡΠΎΠΊΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ python ΠΊΠΎΠ΄Π°, Π²ΡΠΎΡΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈ Π±Π°ΠΉΡΠΊΠΎΠ΄Π°: LOAD_CONST Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ 0, Π° STORE_FAST Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ 3 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π‘ΡΠ΅Π΄Π½ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π΄Π°ΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΎΠ± Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π΅Π»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ), ΡΠ΅ΡΠ²Π΅ΡΡΠ°Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π² Π΄ΡΡΠ³ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ΄Π°. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄Π»Ρ LOAD_CONST ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ΅ co_consts, Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄Π»Ρ STORE_FAST ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ Π² co_varnames, Π² ΠΏΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ:
>>> foo.func_code.co_consts[1]
3
>>> foo.func_code.co_varnames[1]
'x'
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ Π²ΡΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ STORE_FAST ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ 3 Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅. ΠΡΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° Π±Π°ΠΉΡΠ° ΠΈ Π΅ΡΡΡ ΡΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. Π Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ°ΠΊΠΈ Π² ΡΠΎΠΌ ΡΡΠΎΠ±Ρ Π½Π΅ Π·Π°ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠΌΠ½ΠΎΠ΅, Π΄ΠΎΠ±ΡΠΎΠ΅, Π²Π΅ΡΠ½ΠΎΠ΅. (Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ BINARY_ADD Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ ΠΌΡ Π΅ΡΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΡΠΎΠΌΡ)
ΠΡΠ»Π° ΠΎΠ΄Π½Π° Π²Π΅ΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄ΠΈΠ²Π»ΡΠ»Π° ΠΌΠ΅Π½Ρ ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠ΅Π» ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ python, ΠΊΠ°ΠΊ python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡ ΠΈ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡΒ»? ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΈ Π΄Π²Π° ΡΠ»ΠΎΠ²Π° Β«Π°Π½ΡΠΎΠ½ΠΈΠΌΡΒ», Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Python, Ruby, ΠΈ Javascript, Π° Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΊΠΈ ΠΊΠ°ΠΊ C, Java, ΠΈ Haskell.
ΠΠΎΠ³Π΄Π° Π»ΡΠ΄ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ ΠΎΠ± ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π²Π²ΠΈΠ΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² Π½Π°ΡΠΈΠ²Π½ΡΠ΅ x86/ARM/etc ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΠΎΠΎΠ±ΡΠ΅, ΡΠ°Π·Π²Π΅ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡΒ» Π½Π° Π»Π΅ΡΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΈΡΠΎΠ½Π° ΡΠ°Π·Π±ΠΈΡΠ°Π΅Ρ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π²Π½ΡΡΡΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΡΠΎ ΠΊΡΡΠ°ΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ, Π½ΠΎ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ Π½Π°Π΄ΠΎ Π±ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ:
>> def modulus(x, y):
... return x % y
...
>>> [ord(b) for b in modulus.func_code.co_code]
[124, 0, 0, 124, 1, 0, 22, 83]
>>> dis.dis(modulus.func_code)
2 0 LOAD_FAST 0 (x)
3 LOAD_FAST 1 (y)
6 BINARY_MODULO
7 RETURN_VALUE
ΠΡΠ° Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅. Π ΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΡ modus Π±ΡΠ»Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΡΠ΄Π° Π±ΡΠ» ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, Π½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ % (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ modulus) ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² BINARY_MODULO. ΠΠΎΡ ΠΎΠΆΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΈΡΠ΅Π»:
>>> modulus(15,4)
3
ΠΠ΅ΠΏΠ»ΠΎΡ ΠΎ, Π° ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΡΡΠΎ ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠΎΠΊΡ.
>>> modulus("hello %s", "world")
'hello world'
ΠΠΏΠ°Π½Π°, ΡΡΠΎ ΡΡΠΎ ΡΡΡ? ΠΡ Π½Π°Π²Π΅ΡΠ½ΠΎ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅:
>>> print "hello %s" % "world"
hello world
ΠΠΎΠ³Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ BINARY_MODULO Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π²ΡΡ ΡΡΡΠΎΠΊ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΡΡΠΎΠΊ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ modulus ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΡΡΠΈΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ x ΠΈ y, ΡΡΡΠΎΠΊΠΈ Π»ΠΈ ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΠ»Π° ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΡ. ΠΠ½ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ: Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π΅Π½Π½ΡΡ, Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄ΡΡΠ³ΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅ΠΏΠ°ΡΠ°ΡΠΈΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π² ΡΠΎΠΌ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎ BINARY_MODULO Π·Π½Π°ΡΠΈΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. ΠΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ modulus ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡ ΠΎΡΡΠ°ΡΠΎΠΊ, ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΡΡΡΠΎΠΊΠΈβ¦ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ-ΡΠΎ Π΅ΡΡ? ΠΡΠ»ΠΈ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ»Π°ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ __mod__ ΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ.
>>> class Surprise(object):
... def __init__(self, num):
... self.num = num
... def __mod__(self, other):
... return self.num + other.num
...
>>> seven = Surprise(7)
>>> four = Surprise(4)
>>> modulus(seven, four)
11
>>> modulus(7,4)
3
>>> modulus("hello %s", "world")
'hello world'
ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π±Π°ΠΉΡΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. Π’Π°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ modulus ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π±ΡΠ΄ΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° TypeError Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ.
ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΡΠ΄Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ python. ΠΡ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, ΡΡΠΎ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΡΠ΄ΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅. Russell Power ΠΈ Alex Rubinsteyn Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΡΠ°ΡΡΡ Β«ΠΊΠ°ΠΊ Π±ΡΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ pythonΒ», ΡΡΠΎ ΡΡΠ°ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½Π°Ρ.
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠΊΠ° Π²ΡΠ΅. ΠΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°ΡΡΠΈ ΡΡΡ. ΠΡΠΎΡΡ ΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Ρ.ΠΊ. ΠΎΡ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΎΠ±Π»Π°Π΄Π°Ρ Π²ΡΠΎΠΆΠ΄ΡΠ½Π½ΠΎΠΉ Π±Π΅Π·Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΈ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°.
Python 3 — ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π²Π°Ρ Python ΡΠ½Π°ΡΠ°Π»Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅) Π² ΡΠΎΡΠΌΠ°Ρ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°ΠΏ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ — ΡΡΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ΅, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Π³ΡΡΠΏΠΏΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, ΡΠ°Π·Π±ΠΈΠ²Π°Ρ Π΅Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅. Π’Π°ΠΊΠ°Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ — Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ Π°Π±Π·Π°ΡΠ΅ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠ°Π·Ρ — ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π²Π°Ρ. ΠΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΎΠΌ Π·Π°ΠΏΠΈΡΠΈ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .ΡΡΡ (.ΡΡΡ — ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» .ΡΡ). ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΎ ΡΠΎΡΠ΅Π΄ΡΡΠ²Ρ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ (ΡΠΎ Π΅ΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅).
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ²ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Python Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠ°ΠΉΠ» .ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΠ΅Ρ ΡΡΠ°ΠΏ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ — ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΡΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, Python Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π²Π½ΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈ ΡΠ°ΠΉΠ»Π° Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ»ΡΡ Π½Π° Π΄ΠΈΡΠΊ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Π΄ΠΈΡΠΊ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΡΡΡΠ°Π΄Π°Π΅Ρ, ΠΏΡΠΎΡΡΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΈΡΡΠ΅Π·Π½Π΅Ρ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.1 ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΉΠ»Ρ .ΡΡΡ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΡ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΉΠ»Ρ Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ — ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π·Π°ΠΏΡΡΡΠΈΡ ΡΠ°ΠΉΠ» .ΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ. (Π ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ» опиΡΡΠ²Π°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ).
ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½ plitka.ua, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΊΠ΅ΡΠ°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΌΠΎΠ·Π°ΠΈΠΊΡ Π½Π° ΡΠΊΠ»Π°Π΄Π΅ ΠΈ ΠΏΠΎΠ΄ Π·Π°ΠΊΠ°Π·. ΠΡΡΡΠ°Π²ΠΎΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡ Π² ΡΠ°Π»ΠΎΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
ΠΠ°ΠΊ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π² Python?
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠΊΡΠΈΠΏΡ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Π±Π°ΠΉΡΠΎΠ²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΊΠ·ΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ PyPy .
ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Python ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π»ΡΠ±ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΡΠΎ ΠΈ ΡΠ°ΠΉΠ» .py, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ΄ΡΠ»Ρ python ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ, ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ». Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π°, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎΡ ΡΠ°ΠΉΠ», ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΡΠ°ΠΏ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠ°ΠΏΡΡΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ Π½Π΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ, ΠΈ ΡΠ°ΠΉΠ» .pyc Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΉΠ» ΡΠΊΡΠΈΠΏΡΠ° abc.py, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ xyz.py. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» abc.py , xyz.pyc Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ xyz ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½, Π½ΠΎ ΡΠ°ΠΉΠ» abc.pyc Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ abc.py Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ.
ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ py_compile ΠΈ compileall, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° .pyc.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ py_compile.compile : ΠΌΠΎΠ΄ΡΠ»Ρ py_compile ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ½ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ py_compile.compile Π² ΡΡΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅:
>>> import py_compile >>> py_compile.compile('abc.py')
ΠΡΠΎ Π·Π°ΠΏΠΈΡΠ΅Ρ .pyc Π² ΡΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠΎ, ΡΡΠΎ ΠΈ abc.py.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ py_compile.main () : ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
>>> import py_compile >>> py_compile.main(['File1.py','File2.py','File3.py'])
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ compileall.compile_dir () : ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ» python, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
>>> import compileall >>> compileall.compile_dir(directoryname)
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ py_compile Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅:
$ python -m py_compile File1.py File2.py File3.py ...
ΠΠ»ΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²
$ python -m py_compile - File1.py File2.py File3.py . . .
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ compileall Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅: ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ .pyc Π΄Π»Ρ Π²ΡΠ΅Ρ
Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² python.
$ python -m compileall
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ . ΠΠΎΠ΄ΡΠ»Ρ compileall ΠΈ py_compile ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ python, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ.
Π‘ΡΡΠ»ΠΊΠΈ:
1. https://docs.python.org/3/library/py_compile.html
2. https://docs.python.org/2/library/compileall.html
3. ΠΡΡΠ±ΠΎΡ
ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Shubham Bansal . ΠΡΠ»ΠΈ Π²Ρ ΠΊΠ°ΠΊ GeeksforGeeks ΠΈ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ contribute.geeksforgeeks.org ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΅ ΡΡΠ°ΡΡΠΈ [email protected]. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΡΡΠ°ΡΡΡ, ΠΏΠΎΡΠ²Π»ΡΡΡΡΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ GeeksforGeeks, ΠΈ ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌ Π²ΡΠ½Π΄Π΅ΡΠΊΠΈΠ½Π΄Π°ΠΌ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΡΡΡ:
ΠΠ°ΠΊ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π² Python?
0.00 (0%) 0 votes
ΠΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎ Π±Π°ΠΉΡΠ°Ρ Π² Python
ΠΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΡΠΈΠΏ str Π² Python 2. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ: Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ bytes, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠΉΡΡ Π² Python 3, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ bytearray, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ Π² Python 2.6.
ΠΡΡΠ°ΡΠΈ, Π² Python 2.6 Π±ΡΠ» ΡΠ°ΠΊΠΆΠ΅ Π²Π²Π΅Π΄Π΅Π½ ΡΠΈΠΏ bytes, Π½ΠΎ Π»ΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΡΠΈΠΏΠ° str, ΠΎΠ½ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΈΠ½Π°ΡΠ΅, ΡΠ΅ΠΌ ΡΠΈΠΏ bytes Π² Python 3.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ bytes ΠΈΠ»ΠΈ bytearray β ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 255, Π° Π½Π΅ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠ°ΠΊ Π² ΡΠΈΠΏΠ΅ str Π² Python 2 str.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ΅Π· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ΅Π· Π΄Π»ΠΈΠ½Ρ.
ΠΡΠΈΠΌΠ΅Ρ β1. ΠΡΡΠΈΠ±Π°ΠΉΡΠΎΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² Π²ΠΈΠ΄Π΅ bytes ΠΈ bytearray.
>>> cafe = bytes(‘cafΓ©’, encoding=»utf_8″) # (1)
>>> cafe
b’caf\xc3\xa9’
>>> cafe[0] # (2)
99
>>> cafe[:1] # (3)
b’c’
>>> cafe_arr = bytearray(cafe)
>>> cafe_arr # (4)
bytearray(b’caf\xc3\xa9′)
>>> cafe_arr[-1:] # (5)
bytearray(b’\xa9′)
>>>
| >>> cafe = bytes(‘cafΓ©’, encoding=»utf_8″) # (1) >>> cafe b’caf\xc3\xa9′ >>> cafe[0] # (2) 99 >>> cafe[:1] # (3) b’c’ >>> cafe_arr = bytearray(cafe) >>> cafe_arr # (4) bytearray(b’caf\xc3\xa9′) >>> cafe_arr[-1:] # (5) bytearray(b’\xa9′) >>> |
1. bytes ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· str, Π΅ΡΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°.
2. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ β ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ range(256).
3. Π‘ΡΠ΅Π·Ρ bytes ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ bytes, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠ΅Π· ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°
4. ΠΠ»Ρ ΡΠΈΠΏΠ° bytearray Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°: Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° bytearray(), Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΡΠ΅ΡΠ°Π» ΡΠΈΠΏΠ° bytes.
5. Π‘ΡΠ΅Π· cafe_arr ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏΠ° bytearray
Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ my_bytes[0] Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ int, Π° my_bytes[:1] β ΠΎΠ±ΡΠ΅ΠΊΡ bytes Π΄Π»ΠΈΠ½Ρ 1, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ s[0] == s[:1] β ΡΡΠΎ ΡΠΈΠΏΠ° str.
Π Ρ ΠΎΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎΡ ΡΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΡ ΠΈ ΡΡΠ΄ΠΎΠΌ, Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ β ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ s[i] Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π° s[i:i+1] β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° s[i].
Π₯ΠΎΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ β Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», Π² ΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ASCII-ΡΠ΅ΠΊΡΡ.
ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°.
- ΠΠ»Ρ Π±Π°ΠΉΡΠΎΠ² ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ASCII, ΠΈΠΌΠ΅ΡΡΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ β ΠΎΡ ΠΏΡΠΎΠ±Π΅Π»Π° Π΄ΠΎ ~ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» ASCII.
- ΠΠ»Ρ Π±Π°ΠΉΡΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠ°ΡΠ΅ΡΠΊΠΈ ΠΈ \, Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ \t, \n, \r ΠΈ \\.
- ΠΠ»Ρ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π±Π°ΠΉΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠ»Π΅Π²ΠΎΠΉ Π±Π°ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ \x00.
ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β1 ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ bβcaf\xc3\xa9β². ΠΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈ Π±Π°ΠΉΡΠ° bβcafβ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ASCII Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ β Π½Π΅Ρ.
ΠΠ±Π° ΡΠΈΠΏΠ° bytes ΠΈ bytearray ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠΏΠ° str ΠΊΡΠΎΠΌΠ΅ ΡΠ΅Ρ , ΡΡΠΎ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ(format, format_map), ΠΈ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ , ΠΏΡΡΠΌΠΎ Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Unicode, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ casefold, isdecimal, isidentifier, isnumeric, isprintable ΠΈ encode.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΡΡΡΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ endswith, replace, strip, translate, upper ΠΈ Π΄Π΅ΡΡΡΠΊΠ°ΠΌΠΈ Π΄ΡΡΠ³ΠΈΡ , ΡΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ bytes, Π° Π½Π΅ str.
Π Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ re, Π΅ΡΠ»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° Π½Π΅ ΠΈΠ· str.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ % Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ Π² Π²Π΅ΡΡΠΈΡΡ ΠΎΡ Python 3.0 Π΄ΠΎ 3.4, Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Π΅ΡΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ PEP 461, ΡΠΎ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ % ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ ΠΌΠΎΠΉ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ WordPress ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ThemeForest Grand Conference ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΡΡΠΎ Π±Π΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° % ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
ΠΠ»Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°, ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ Π² ΡΠΈΠΏΠ΅ str: fromhex, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠΎΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ°Π·Π±ΠΈΡΠ°Ρ ΠΏΠ°ΡΡ ΡΠ΅ΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ ΡΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Ρ ΠΎΡΡ ΡΡΠΎ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
>>> bytes.fromhex(«34 FF FA A3 A5»)
b’4\xff\xfa\xa3\xa5’
>>>
| >>> bytes.fromhex(«34 FF FA A3 A5») b’4\xff\xfa\xa3\xa5′ >>> |
ΠΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² bytes ΠΈ bytearray ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ²:
- Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ str ΠΈ encoding;
- Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ 255;
- Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π±ΡΡΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, bytes, bytearray, memoryview, array.array), ΠΏΡΠΈ ΡΡΠΎΠΌ Π±Π°ΠΉΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΠΎ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ· Π±ΡΡΠ΅ΡΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Β β ΡΡΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ β2. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°ΠΉΡΠΎΠ² Π΄Π°Π½Π½ΡΠΌΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΠΌΠΈΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
>>> import array
>>> numbers = array.array(‘h’, [-3, -2, -1, 0, 1, 2, 3]) # (1)
>>> octets = bytes(numbers) # (2)
>>> octets
b’\xfd\xff\xfe\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00′ # (3)
>>>
| >>> import array >>> numbers = array.array(‘h’, [-3, -2, -1, 0, 1, 2, 3]) # (1) >>> octets = bytes(numbers) # (2) >>> octets b’\xfd\xff\xfe\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00′ # (3) >>> |
1. ΠΠΎΠ΄ ΡΠΈΠΏΠ° βhβ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠΎΡΠΎΡΠΊΠΈΡ
ΡΠ΅Π»ΡΡ
(16-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ
).
2. Π ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ octets Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΊΠΎΠΏΠΈΡ Π±Π°ΠΉΡΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΈΡΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ numbers.
3. ΠΡΠΎ ΡΠ΅ΡΡΡΠ½Π°Π΄ΡΠ°ΡΡ Π±Π°ΠΉΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ
ΡΠ΅ΠΌΡ ΠΊΠΎΡΠΎΡΠΊΠΈΡ
ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π».
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ Π±ΠΎΡΡ Π² Π³ΡΡΠΏΠΏΠ΅ ΠΠ? ΠΠΎΡΠ΅ΠΌΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π»ΡΠ΄ΠΈ? ΠΠΎΡΡΠ°Π» https://pricesmm.com/ ΠΎΡΠ²Π΅ΡΠΈΠ» Π½Π° ΠΊΠ°Π²Π΅ΡΠ·Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ Π²ΡΡΡΠ½ΠΈΠ», ΠΊΠ°ΠΊ Π½Π°ΠΊΡΡΡΠΈΡΡ Π±ΠΎΡΠΎΠ² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π·Π° Π΄Π΅Π½ΡΠ³ΠΈ ΠΈ Π±Π΅Π· Π·Π°ΡΡΠ°Ρ. ΠΠ»Ρ Π²Π°Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΈ ΡΠ΅ΡΡΠ½ΡΠΉ ΠΎΠ±Π·ΠΎΡ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° bytes ΠΈΠ»ΠΈ bytearray ΠΈΠ· Π±ΡΡΠ΅ΡΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π°ΠΉΡΠΎΠ².
ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° memoryview ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·Π½ΡΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π΅ΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ struct.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ
Python | ΠΌΠ΅ΡΠΎΠ΄ bytes ()
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠΌ Python Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ. ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π° Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
Π² bytes (), ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
Π΄Π»Ρ ΡΡ
Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
byte () ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π±Π°ΠΉΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ Π΄Π°Π½Π½ΡΡ
.
Syntax : bytes(src, enc, err)
Parameters :
src : The source object which has to be converted
enc : The encoding required in case object is a string
err : Way to handle error in case the string conversion fails.Returns :
Byte immutable object consisting of unicode 0-256 characters according to src type.
integer : Returns array of size initialized to null
iterable : Returns array of iterable size with elements equal to iterable elements( 0-256 )
string : Returns the encoded string acc. to enc and if encoding fails, performs action according
to err specified.
no arguments : Returns array of size 0.
ΠΠΎΠ΄ β1: Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ byte () Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», none ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ
|
ΠΡΡ ΠΎΠ΄:
Byte conversion with no arguments : b'' The integer conversion results in : b'\x00\x00\x00\x00' The iterable conversion results in : b'\x01\x02\x03\x04\x05'
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠΎΠ² ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
ΠΠ°ΠΉΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π΄Π»Ρ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡ Π΅ΠΌΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌ Π°ΡΠΏΠ΅ΠΊΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡ Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ:
String Error Handlers :
strict : Raises the default UnicodeDecodeError in case of encode failure.
ignore : Ignores the unencodable character and encodes the remaining string.
replace : Replaces the unencodable character with a β?β.
ΠΠΎΠ΄ β 2: Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ bytes () Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ
|
ΠΡΡ ΠΎΠ΄:
Byte conversion with ignore error : b'GeeksfrGeeks' Byte conversion with replace error : b'Geeksf?rGeeks'
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
Traceback (most recent call last): File "/home/0458f7fae57c6f4102366356593842ef.py", line 15, in print ("Byte conversion with strict error : " + str(bytes(str1, 'ascii', errors = 'strict'))) UnicodeEncodeError: 'ascii' codec can't encode character '\xd6' in position 6: ordinal not in range(128)
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΡΡΡ:
Python | ΠΌΠ΅ΡΠΎΠ΄ bytes ()
0.00 (0%) 0 votes
ΠΠ°ΠΉΡ ΠΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΠΈΠ² Π‘ΡΡΠΎΠΊΠΈ Π² ΠΠΈΡΠΎΠ½Π΅
Π Python 2 ΠΈ str, ΠΈ Π±Π°ΠΉΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ typeByte, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Python 3 Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² Python 3, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Β« ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π°ΠΉΡΠΎΠ² Β» ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Β« unicode Β» ΠΈΠ· Python 2. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ Π² ΡΡΡΠΎΠΊΠ°Ρ
ΠΈ ΠΠ°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π½ΠΈΠΆΠ΅:
`
- ΠΠ°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ β ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π°ΠΉΡΠΎΠ² , Π° ΡΡΡΠΎΠΊΠΈ β ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² .
- ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΠ΅, ΡΡΡΠΎΠΊΠΈ β ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΠ΅.
- ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅ . ΠΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² String ΠΈ String Π² Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
PNG, JPEG, MP3, WAV, ASCII, UTF-8 ΠΈ Ρ. Π. Π―Π²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° β ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°ΡΠ΄ΠΈΠΎ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΅ΠΊΡΡΠ° ΠΈ Ρ. Π. Π Π±Π°ΠΉΡΠ°Ρ . ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Π² Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ Π½Π° Π΄ΠΈΡΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ASCII ΠΈΠ»ΠΈ UTF-8 .
ΠΡΠ° Π·Π°Π΄Π°ΡΠ° Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ encode () . Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° UTF-8 .
|
ΠΡΡ ΠΎΠ΄:
Encoding successful
ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Decoding β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Byte Π² String . ΠΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ decode () . Π‘ΡΡΠΎΠΊΠ° Π±Π°ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΡΡΠΎΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΅ΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π΄Π»Ρ Π΅Π΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
|
ΠΡΡ ΠΎΠ΄:
Decoding successful
ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° ΠΠ°Π½Π΄ΠΆΠΈΡΠΎΠΌ Π‘ΠΈΠ½Π³Ρ ΠΎΠΌ . ΠΡΠ»ΠΈ Π²Ρ ΠΊΠ°ΠΊ GeeksforGeeks ΠΈ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ contribute.geeksforgeeks.org ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΅ ΡΡΠ°ΡΡΠΈ [email protected]. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΡΡΠ°ΡΡΡ, ΠΏΠΎΡΠ²Π»ΡΡΡΡΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ GeeksforGeeks, ΠΈ ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌ Π²ΡΠ½Π΄Π΅ΡΠΊΠΈΠ½Π΄Π°ΠΌ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΠΎΠΉ Π²ΡΡΠ΅ ΡΠ΅ΠΌΠ΅.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΡΡΡ:
ΠΠ°ΠΉΡ ΠΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΠΈΠ² Π‘ΡΡΠΎΠΊΠΈ Π² ΠΠΈΡΠΎΠ½Π΅
0.00 (0%) 0 votes
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Python
ΠΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠΈΡΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Python, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Python; ΠΈΡ
ΠΈΠΌΠ΅Π½Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° .py
. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΌΡΡ Π½Π° .pyc
, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»ΡΡΠ°Π»ΠΈ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Β«Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°Β» Python. (ΠΡ
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² Python 3 — Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΡΠΎ ΠΈ Π²Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ .py
, ΠΎΠ½ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ __pycache__
.) Π, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠ»ΡΡΠ°Π»ΠΈ, ΡΡΠΎ ΡΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Python ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅.
ΠΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ Β«ΠΎ, ΡΡΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ PythonΒ», Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΈ ΠΊΠ°ΠΊ Python ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ?
ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π²Π°Ρ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΡΠΉ Π΄Π΅Π½Ρ! Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π²Π°ΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Python, ΠΊΠ°ΠΊ Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΅Π³ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠ°ΠΊ Π·Π½Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Python
Python ΡΠ°ΡΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π¦Π ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ Π»ΠΈΡΡ ΠΎΡΡΠ°ΡΡΠΈ.Python, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ·ΡΠΊΠΈ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΡΠΎΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌΒ».
ΠΡΠ°ΠΊ, ΡΠ΅ .pyc
ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Python ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π΅Π· Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, Π½Π΅ ΠΏΡΠΎΡΡΠΎ Β«Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠ°ΡΒ» ΠΈΠ»ΠΈ Β«ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°ΡΒ» Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°; ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ Python ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ.ΠΠΎΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Β«Hello, World!Β» Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Python:
def hello ()
print (Β«Hello, World!Β»)
Π Π²ΠΎΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ (ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΎΡΠΌΡ):
2 0 LOAD_GLOBAL 0 (ΠΏΠ΅ΡΠ°ΡΡ)
2 LOAD_CONST 1 ('Hello, World!')
4 CALL_FUNCTION 1
ΠΡΠ»ΠΈ Π²Ρ Π½Π°Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ hello ()
ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ CPython Π΄Π»Ρ Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Python Π²ΡΠΏΠΎΠ»Π½ΠΈΡ.ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π³Π»ΡΠ±ΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ.
ΠΠ½ΡΡΡΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Python
CPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ΅ΠΊΠ°. Π’ΠΎ Π΅ΡΡΡ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅ΠΊΠ° (Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Β«ΠΏΡΠΎΡΠΎΠ»ΠΊΠ½ΡΡΡΒ» ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«Π½Π°Π²Π΅ΡΡ Β» ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ Β«Π²ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΒ» ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«ΡΠ²Π΅ΡΡ ΡΒ»).
CPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΡΠ΅ΠΊΠΎΠ²:
- Π‘ΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² . ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Python. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ — Β«ΡΡΠ΅ΠΉΠΌΒ» — Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Π½ΠΈΠΆΠ½ΡΡ ΡΠ°ΡΡΡ ΡΡΠ΅ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.ΠΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ Π² ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, Π΅Π³ΠΎ ΠΊΠ°Π΄Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ.
- Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅ Π΅ΡΡΡ ΡΡΠ΅ΠΊ ΠΎΡΠ΅Π½ΠΊΠΈ (ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΡΠ΅ΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ ). Π ΡΡΠΎΠΌ ΡΡΠ΅ΠΊΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Python, Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Python ΡΠΎΡΡΠΎΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠΎΡ ΡΡΠ΅ΠΊ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠΈ ΠΈ ΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ.
- Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅ Π΅ΡΡΡ ΡΡΠ΅ΠΊΠ° Π±Π»ΠΎΠΊΠΎΠ² . ΠΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Python Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΈΠΏΠΎΠ² ΡΡΡΡΠΊΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ: ΡΠΈΠΊΠ»Ρ,
ΠΏΠΎΠΏΡΡΠΎΠΊ,
/, ΠΊΡΠΎΠΌΠ΅
Π±Π»ΠΎΠΊΠΎΠ², ΠΈΡ
Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, Π²ΡΠ΅ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΡΠ΅ΠΊ Π±Π»ΠΎΠΊΠΎΠ², ΠΈ ΡΡΠ΅ΠΊ Π±Π»ΠΎΠΊΠΎΠ² Π²ΡΠΏΠ»ΡΠ²Π°Π΅Ρ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ.ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Python Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ Π°ΠΊΡΠΈΠ²Π½Ρ Π² Π»ΡΠ±ΠΎΠΉ Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡcontinue
ΠΈΠ»ΠΈbreak
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡΡ ΡΡΠ΅ΠΊΠΎΠΌ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ², Ρ ΠΎΡΡ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΈΠ»ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠΎΠΌ Π±Π»ΠΎΠΊΠΎΠ²).
Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠΎ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: my_function (my_variable, 2)
.Python ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Ρ ΡΡΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°:
- ΠΠ½ΡΡΡΡΠΊΡΠΈΡ
LOAD_NAME
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈmy_function
ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π½Π° Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½ΠΊΠΈ - ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
LOAD_NAME
, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡmy_variable
ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ ΠΏΠΎΠ²Π΅ΡΡ ΡΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½ΠΊΠΈ - ΠΠ½ΡΡΡΡΠΊΡΠΈΡ
LOAD_CONST
Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ2
Π½Π° Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½ΠΊΠΈ - A
CALL_FUNCTION
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΠΎΠΌΠ°Π½Π΄Π° CALL_FUNCTION
Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ 2, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Python Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ Π΄Π²Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΠ· Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ΅ΠΊΠ°; ΡΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π°Π²Π΅ΡΡ
Ρ, ΠΈ Π΅Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΡ (Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΡΡΠ³Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ — CALL_FUNCTION_KW
, Π½ΠΎ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ ΡΠ°Π±ΠΎΡΡ, ΠΈ ΡΡΠ΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, CALL_FUNCTION_EX
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² *
ΠΈΠ»ΠΈ **
).ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Python ΠΏΠΎΠ»ΡΡΠΈΡ Π²ΡΠ΅ ΡΡΠΎ, ΠΎΠ½ Π²ΡΠ΄Π΅Π»ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΉΠΌ Π² ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ my_function
Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ°. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΠΊΠ°Π΄Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ ΠΈΠ· ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π° Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ my_function
Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
ΡΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½ΠΊΠΈ.
ΠΠΎΡΡΡΠΏ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΡΠΈΠΌ, ΠΌΠΎΠ΄ΡΠ»Ρ dis
Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Python Π²Π°ΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ; ΠΌΠΎΠ΄ΡΠ»Ρ dis
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Β«Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΒ» Π΄Π»Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python, ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΠΎΠΈΡΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°.ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ dis
ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ hello ()
, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅, Ρ Π²Π²Π΅Π» Π΅Π³ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΠ»:
Π€ΡΠ½ΠΊΡΠΈΡ dis.dis ()
Π±ΡΠ΄Π΅Ρ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠ»Π°ΡΡ, ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π° Python ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π»ΠΈΡΠ΅ΡΠ°Π», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²Π΅ΡΡΠΈΡ, ΡΠ΄ΠΎΠ±Π½ΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ dis
— distb ()
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Python ΠΈΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΡΡ Π²Π΅ΡΡ
Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·Π²Π°Π»Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Python ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΠ΄Π°.ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ hello ()
:
>>> hello .__ code__
<ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π° hello at 0x104e46930, ΡΠ°ΠΉΠ» "", ΡΡΡΠΎΠΊΠ° 1>
>>> hello .__ code __. Co_consts
(None, 'Hello, World!')
>>> hello .__ code __. co_varnames
()
>>> ΠΏΡΠΈΠ²Π΅Ρ .__ code __. co_names
('print',)
ΠΠΎΠ΄ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ __code__
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π½Π΅ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ²:
-
co_consts
— ΠΊΠΎΡΡΠ΅ΠΆ Π»ΡΠ±ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ -
co_varnames
— ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΆ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠΌΠ΅Π½Π° Π»ΡΠ±ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ -
co_names
— ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΆ Π»ΡΠ±ΡΡ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° — ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² ΡΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°Ρ , — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΡΡΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ hello ()
:
-
LOAD_GLOBAL 0
: ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Python ΠΈΡΠΊΠ°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΈΠΌΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 ΠΈΠ·co_names
(ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉprint
), ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π² ΡΡΠ΅ΠΊ ΠΎΡΠ΅Π½ΠΊΠΈ -
LOAD_CONST 1
: ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 1 ΠΈΠ·co_consts
ΠΈ ΡΠΎΠ»ΠΊΠ°Π΅Ρ Π΅Π³ΠΎ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 — ΡΡΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»None
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π²co_consts
, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Python ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΠ΅Ρ
, Π΅ΡΠ»ΠΈ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΡΠ²Π½ΠΎΠ΅return
) -
CALL_FUNCTION 1
: ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Python Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ; Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΡΠΎΠ³Π΄Π° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΠ½Π° ΡΡΠ΅ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π°.
Β«ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉΒ» Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ — ΠΊΠ°ΠΊ Π±Π°ΠΉΡΡ, Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ — ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ co_code
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ dis.opname
Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠΌΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΠΏΠΎ ΠΈΡ
Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π±Π°ΠΉΡΠΎΠ², Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²ΡΡΡΠ½ΡΡ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΡΠΈΡΠ°Π»ΠΈ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ: Β«Π₯ΠΎΡΠΎΡΠΎ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΊΡΡΡΠΎ, Π½ΠΎ Π² ΡΠ΅ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π·Π½Π°Π½ΠΈΡ?Β» ΠΡΡΠ°Π²ΠΈΠ² Π² ΡΡΠΎΡΠΎΠ½Π΅ Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²ΠΎ ΡΠ°Π΄ΠΈ Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²Π°, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ .
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Python ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄. ΠΡΠ΄ΡΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΡΡΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ C ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° Β«ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΡΠΌ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌΒ», Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡΡ ΠΎ ΡΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° C. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π΄Π°ΡΡ Π²Π°ΠΌ ΡΠ΅ ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΈ Π² Python — Π΅ΡΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Python, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° — ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ ΠΎ Python.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ°ΡΡΠΎ Π²ΠΈΠΆΡ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Python Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π±ΡΡΡΡΠ΅Π΅ Π΄ΡΡΠ³ΠΈΡ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ {}
Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ dict ()
). ΠΠ½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Python, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ ΠΎΡΠ²Π΅ΡΡ (ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅: dis.dis ("{}")
ΠΏΡΠΎΡΠΈΠ² dis.dis ("dict ()")
).
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Python Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ, Π΄Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Python Π½Π΅ ΡΠ°ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ΅ΠΊΠ°.ΠΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ΅ΠΊ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ FORTH ΠΈΠ»ΠΈ Factor, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ°ΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ, ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΅Π³ΠΎ ΡΡΠ΅ΠΊ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, — ΡΡΠΎ ΠΈΠ·ΡΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°. ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π΅ Python, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Python ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΠΈ ΡΠ΅ΡΡΡΡΡ:
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΠΆΠ΅ΠΉΠΌΡΠ° ΠΠ΅Π½Π½Π΅ΡΠ° Β«ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π±Π°ΠΉΡΠ°Ρ : ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° PythonΒ» Π½Π° PyCon Cleveland 2018.
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Python ΠΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π±ΠΈΡΡ Π² Π±Π°ΠΉΡΠ°Ρ ?
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
.