αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Brython 3.10 αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž—αžΆαžŸαžΆ Python αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž”αžŽαŸ’αžŠαžΆαž‰

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‚αž˜αŸ’αžšαŸ„αž„ Brython 3.10 (Browser Python) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Python 3 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αŸ’αžšαžΎ Python αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ JavaScript αžŠαžΎαž˜αŸ’αž”αžΈαž’αž—αž·αžœαžŒαŸ’αžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαŸ” αž€αžΌαžŠαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆ Python αž“αž·αž„αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αžŽαŸ’αžŽ BSD αŸ”

αžŠαŸ„αž™αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ brython.js αž“αž·αž„ brython_stdlib.js αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αŸαž αž‘αŸ†αž–αŸαžšαž’αžΆαž…αž”αŸ’αžšαžΎαž—αžΆαžŸαžΆ Python αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸƒαž‚αŸαž αž‘αŸ†αž–αŸαžšαž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αžŠαŸ„αž™αž”αŸ’αžšαžΎ Python αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ JavaScript αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠ Python αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžš αžŸαžΌαž˜αž”αŸ’αžšαžΎαžŸαŸ’αž›αžΆαž€ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαž—αŸαž‘ mime β€œtext/pythonβ€αŸ” αž‘αžΆαŸ†αž„αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠαž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžš αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαžΆαž„αž€αŸ’αžšαŸ… () αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαŸ” αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αŸαž‰αž›αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžαž» DOM αž“αž·αž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαŸ” αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš Python αžœαžΆαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž―αž€αž‘αŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ DOM αž“αž·αž„ JavaScript αžŠαžΌαž…αž‡αžΆ jQuery, D3, Highcharts αž“αž·αž„ Raphael αŸ” αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ CSS frameworks Bootstrap3, LESS αž“αž·αž„ SASS αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαŸ”

αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠ Python αž–αžΈαž”αŸ’αž›αž»αž€ производится Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ этого ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Brython послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ инициируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ brython(), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ «». На основС Python-ΠΊΠΎΠ΄Π° формируСтся прСдставлСниС Π½Π° языкС JavaScript, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ выполняСтся ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΌ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (для сравнСния, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PyPy.js ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ для выполнСния Python-ΠΊΠΎΠ΄Π° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ скомпилированный Π² asm.js ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ CPython, Π° Skulpt Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° JavaScript).

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αžŠαŸ‚αž›αž”αž„αŸ’αž€αž”αŸ‹αž€αŸ’αž“αž»αž„αž‚αŸαž αž‘αŸ†αž–αŸαžšαž‚αžΊαž“αŸ…αž‡αž·αžαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹ CPythonαŸ” αž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž€αžΎαžαž‘αžΎαž„αžαŸ‚αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž…αž„αž€αŸ’αžšαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αžœαžΆ αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž€αžΌαžŠ JavaScript αžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž‡αžΆαž˜αž»αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš (Brython αž•αŸ’αžαž›αŸ‹αž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ JavaScript αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αŸ‰αžΌαžŒαž»αž› Python )

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαž“αŸαŸ‡αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™ Python 3.10 αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž‚αŸ†αžšαžΌ (match/case) operators αŸ” αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαž€αŸαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ†αž”αžΌαž„αž“αŸƒαž˜αŸ‚αž€αž’αžΆαž„αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αžšαžΌαž”αžΈ (AST, Abstract Syntax Tree) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžŸαžΆ Python αžŠαŸ‚αž›αž€αŸ’αžšαŸ„αž™αž˜αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ JavaScript αž–αžΈ AST αžŸαž€αž›αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹