Brython 3.9 เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ, เชตเซ‡เชฌ เชฌเซเชฐเชพเช‰เชเชฐเซเชธ เชฎเชพเชŸเซ‡ Python เชญเชพเชทเชพเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ

เชชเซเชฐเช•เชพเชถเชฟเชค เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเซเชฐเช•เชพเชถเชจ เชฌเซเชฐเชพเชฏเชฅเซ‹เชจ 3.9 (เชฌเซเชฐเชพเช‰เชเชฐ เชชเชพเชฏเชฅเซ‹เชจ) เชตเซ‡เชฌ เชฌเซเชฐเชพเช‰เชเชฐ เชฌเชพเชœเซ เชชเชฐ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฎเชพเชŸเซ‡ Python 3 เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฒเซ‡เช‚เช—เซเชตเซ‡เชœเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡, เชคเชฎเชจเซ‡ เชตเซ‡เชฌ เชฎเชพเชŸเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ เชตเชฟเช•เชธเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ JavaScript เชจเซ‡ เชฌเชฆเชฒเซ‡ Python เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‹เชก Python เช…เชจเซ‡ เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡ เชฆเซเชตเชพเชฐเชพ เชตเชฟเชคเชฐเชฟเชค BSD เชฒเชพเชฏเชธเชจเซเชธ เชนเซ‡เช เชณ. เชจเชตเซ€ เชฐเชฟเชฒเซ€เช เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชคเชคเชพ เชฎเชพเชŸเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เช›เซ‡ เชชเชพเชฏเชฅเซ‹เชจ 3.9 เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชœเซ‹เชกเชพเชˆ เชฐเชนเซ€ เช›เซ‡ brython.js ะธ brython_stdlib.js, เชตเซ‡เชฌ เชกเซ‡เชตเชฒเชชเชฐ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ JavaScript เชจเซ‡ เชฌเชฆเชฒเซ‡ Python เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซเชฒเชพเชฏเชจเซเชŸ เชฌเชพเชœเซ เชชเชฐ เชธเชพเช‡เชŸเชจเชพ เชคเชฐเซเช•เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Python เชญเชพเชทเชพ. เชชเซƒเชทเซเช เซ‹ เชชเชฐ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชŸเซ‡เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ ั mime-ั‚ะธะฟะพะผ ยซtext/pythonยป. ะ”ะพะฟัƒัะบะฐะตั‚ัั ะบะฐะบ ะฒัั‚ั€ะฐะธะฒะฐะฝะธะต ะบะพะดะฐ ะฝะฐ ัั‚ั€ะฐะฝะธั†ัƒ, ั‚ะฐะบ ะธ ะทะฐะณั€ัƒะทะบะฐ ะฒะฝะตัˆะฝะธั… ัะบั€ะธะฟั‚ะพะฒ (). ะ˜ะท ัะบั€ะธะฟั‚ะฐ ะฟั€ะตะดะพัั‚ะฐะฒะปัะตั‚ัั ะฟะพะปะฝั‹ะน ะดะพัั‚ัƒะฟ ะบ ัะปะตะผะตะฝั‚ะฐะผ ะธ ัะพะฑั‹ั‚ะธัะผ DOM.
เชชเชพเชฏเชฅเซ‹เชจ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เช‰เชชเชฐเชพเช‚เชค, เชคเซ‡ DOM เช…เชจเซ‡ JavaScript เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชœเซ‡เชฎ เช•เซ‡ jQuery, D3, Highcharts เช…เชจเซ‡ Raphael เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. CSS เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• Bootstrap3, LESS เช…เชจเซ‡ SASS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡.

เชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚เชฅเซ€ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชจเซ‹ เช…เชฎเชฒ ะฟั€ะพะธะทะฒะพะดะธั‚ัั ั‡ะตั€ะตะท ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝัƒัŽ ะบะพะผะฟะธะปัั†ะธัŽ ัั‚ะพะณะพ ะบะพะณะดะฐ, ะฒั‹ะฟะพะปะฝัะตะผัƒัŽ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะพะผ Brython ะฟะพัะปะต ะทะฐะณั€ัƒะทะบะธ ัั‚ั€ะฐะฝะธั†ั‹. ะšะพะผะฟะธะปัั†ะธั ะธะฝะธั†ะธะธั€ัƒะตั‚ัั ะฟั€ะธ ะฟะพะผะพั‰ะธ ะฒั‹ะทะพะฒะฐ ั„ัƒะฝะบั†ะธะธ brython(), ะฝะฐะฟั€ะธะผะตั€ ั‡ะตั€ะตะท ะดะพะฑะฐะฒะปะตะฝะธะต ยซยป. ะะฐ ะพัะฝะพะฒะต Python ะบะพะดะฐ ั„ะพั€ะผะธั€ัƒะตั‚ัั ะฟั€ะตะดัั‚ะฐะฒะปะตะฝะธะต ะฝะฐ ัะทั‹ะบะต JavaScript, ะบะพั‚ะพั€ะพะต ะทะฐั‚ะตะผ ะฒั‹ะฟะพะปะฝัะตั‚ัั ัˆั‚ะฐั‚ะฝั‹ะผ JavaScript-ะดะฒะธะถะบะพะผ ะฑั€ะฐัƒะทะตั€ะฐ (ะดะปั ัั€ะฐะฒะฝะตะฝะธั, ะฟั€ะพะตะบั‚ PyPy.js เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ Python เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ asm.js เชฎเชพเช‚ เชธเช‚เช•เชฒเชฟเชค CPython เชฆเซเชญเชพเชทเชฟเชฏเชพ เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเซเช•เซเชฒเชชเซเชŸ JavaScript เชฎเชพเช‚ เชฆเซเชญเชพเชทเชฟเชฏเชพเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡).

เชตเซ‡เชฌ เชชเซƒเชทเซเช เซ‹เชฎเชพเช‚ เชœเชกเชฟเชค เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซเช‚ เชเช•เช‚เชฆเชฐ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฌเช‚เชง CPython เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเชพเชŸเซ‡. เชตเชฟเชฒเช‚เชฌ เชซเช•เซเชค เชธเช‚เช•เชฒเชจ เชคเชฌเช•เซเช•เซ‡ เชœ เชฅเชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเซ‚เชฐเซเชต-เชธเช‚เช•เชฒเชฟเชค เชœเชพเชตเชพเชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซ‹เชก เชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซเชธเซเชคเช•เชพเชฒเชฏ (เชฌเซเชฐเชพเชฏเชฅเซ‹เชจ) เชจเชพ เชฒเซ‹เชกเชฟเช‚เช—เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡ เชธเชพเชงเชจเซ‹ Python เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค JavaScript เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡).

เช†เชฏเชพเชค เชธเชฎเชฏ
เช†เชฏเชพเชค เช—เชฃเชฟเชค

เชฌเซเชฐเชพเช‰เชเชฐ เช†เชฏเชพเชค เชฆเชธเซเชคเชพเชตเซ‡เชœเชฎเชพเช‚เชฅเซ€
browser.timer เช†เชฏเชพเชค เช•เชฐเซ‹

เชธเชพเชฎเช—เซเชฐเซ€ = เชฆเชธเซเชคเชพเชตเซ‡เชœ["เชธเชพเชฎเช—เซเชฐเซ€"]

...

canvas = content.select_one(โ€œ.clockโ€)

เชœเซ‹ hasattr(เช•เซ‡เชจเชตเชพเชธ, 'getContext'):
ctx = canvas.getContext("2d")

browser.timer.set_interval(set_clock, 100)
show_hours()
เชฌเซ€เชœเซเช‚:
content.select_one('.navig_zone').html = "เช•เซ‡เชจเชตเชพเชธ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชจเชฅเซ€"

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹