ИзданиС Π½Π° Brython 3.9, рСализация Π½Π° Π΅Π·ΠΈΠΊΠ° Python Π·Π° ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Ρ€Π΅Π»ΠΈΠ· Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Brython 3.9 (Browser Python) с рСализация Π½Π° програмния Π΅Π·ΠΈΠΊ Python 3 Π·Π° изпълнСниС ΠΎΡ‚ страна Π½Π° ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°, позволяваща ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Python вмСсто JavaScript Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° скриптовС Π·Π° Web. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° Python ΠΈ сС разпространява Π΅ ΠΏΠΎΠ΄ лицСнзия BSD. Новото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ с осигуряванСто Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с Python 3.9 ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

ΠŸΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ brython.js ΠΈ brython_stdlib.js, ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ языка Python Π·Π° опрСдСлянС Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° сайта ΠΎΡ‚ страната Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Python вмСсто JavaScript. Π—Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Python ΠΊΠΎΠ΄ Π² страницитС сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚Π°Π³ с mime Ρ‚ΠΈΠΏ β€žtext/pythonβ€œ. Допуска сС ΠΊΠ°ΠΊΡ‚ΠΎ встраиванСто Π½Π° ΠΊΠΎΠ΄Π° Π² страницата, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° външни скриптовС (). ΠžΡ‚ скрипта сС прСдоставя пълСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π½Π° DOM.
Π’ допълнСниС Π΄ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Python, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ спСциализирани Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° взаимодСйствиС с DOM ΠΈ JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ jQuery, D3, Highcharts ΠΈ Raphael. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° CSS Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅ Bootstrap3, LESS ΠΈ SASS.

ИзпълнСниС Π½Π° Python ΠΊΠΎΠ΄ ΠΎΡ‚ Π±Π»ΠΎΠΊΠΎΠ²Π΅ <script> производится Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ этого ΠΊΠΎΠ³Π΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Brython послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ инициируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ brython(), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ «<body onload="»brython()»">». На основС Python ΠΊΠΎΠ΄Π° формируСтся прСдставлСниС Π½Π° языкС JavaScript, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ выполняСтся ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΌ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (для сравнСния, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PyPy.js ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π·Π° изпълнСниС Π½Π° Python ΠΊΠΎΠ΄ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ CPython, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ Π² asm.js, Π° Skulpt Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° JavaScript).

ΠšΡ€Π°ΠΉΠ½Π°Ρ‚Π° производитСлност Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π² ΡƒΠ΅Π± страници Python скриптовС Π΅ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ производитСлността Π½Π° CPython. Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ само Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° компилацията, Π½ΠΎ Π·Π° отстраняванС ΠΈΠΌ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄ Π² JavaScript, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° ускоряванС Π½Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° (Brython ΠΏΡ€Π΅Π΄Π»Π°Π³Π° инструмСнти Π·Π° създаванС Π½Π° JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Python).

<script type=Β»text/pythonΒ»>

import time
import math

from browser import document
import browser.timer

content = document["content"]

…

canvas = content.select_one(".clock")

if hasattr(canvas, 'getContext'):
ctx = canvas.getContext("2d")

browser.timer.set_interval(set_clock, 100)
show_hours()
else:
content.select_one('.navig_zone').html = "canvas is not supported"

</script>

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster