рдмреНрд░рд╛рдпрдерди 3.9 рдХрд╛ рд╡рд┐рдореЛрдЪрди, рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдореЛрдЪрди рдмреНрд░рд╛рдпрдерди 3.9 (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд╛рдпрдерди) рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрдХреНрд╖ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 3 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд. рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдЗрд╕рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдЕрдЬрдЧрд░ 3.9 рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ред

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмреНрд░рд╛рдпрдерди.рдЬреЗ.рдПрд╕ ╨╕ brython_stdlib.js, рдПрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╕рд╛рдЗрдЯ рдХреЗ рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрдерди рднрд╛рд╖рд╛ред рдкреЗрдЬреЛрдВ рдкрд░ рдкрд╛рдпрдерди рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ╤Б mime-╤В╨╕╨┐╨╛╨╝ ┬лtext/python┬╗. ╨Ф╨╛╨┐╤Г╤Б╨║╨░╨╡╤В╤Б╤П ╨║╨░╨║ ╨▓╤Б╤В╤А╨░╨╕╨▓╨░╨╜╨╕╨╡ ╨║╨╛╨┤╨░ ╨╜╨░ ╤Б╤В╤А╨░╨╜╨╕╤Ж╤Г, ╤В╨░╨║ ╨╕ ╨╖╨░╨│╤А╤Г╨╖╨║╨░ ╨▓╨╜╨╡╤И╨╜╨╕╤Е ╤Б╨║╤А╨╕╨┐╤В╨╛╨▓ (). ╨Ш╨╖ ╤Б╨║╤А╨╕╨┐╤В╨░ ╨┐╤А╨╡╨┤╨╛╤Б╤В╨░╨▓╨╗╤П╨╡╤В╤Б╤П ╨┐╨╛╨╗╨╜╤Л╨╣ ╨┤╨╛╤Б╤В╤Г╨┐ ╨║ ╤Н╨╗╨╡╨╝╨╡╨╜╤В╨░╨╝ ╨╕ ╤Б╨╛╨▒╤Л╤В╨╕╤П╨╝ DOM.
рдкрд╛рдпрдерди рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ DOM рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ jQuery, D3, рд╣рд╛рдИрдЪрд╛рд░реНрдЯреНрд╕ рдФрд░ рд░рд╛рдлреЗрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред CSS рдлреНрд░реЗрдорд╡рд░реНрдХ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк3, LESS рдФрд░ SASS рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд░реНрдерд┐рдд рд╣реИред

рдмреНрд▓реЙрдХ рд╕реЗ рдкрд╛рдпрдерди рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ ╨┐╤А╨╛╨╕╨╖╨▓╨╛╨┤╨╕╤В╤Б╤П ╤З╨╡╤А╨╡╨╖ ╨┐╤А╨╡╨┤╨▓╨░╤А╨╕╤В╨╡╨╗╤М╨╜╤Г╤О ╨║╨╛╨╝╨┐╨╕╨╗╤П╤Ж╨╕╤О ╤Н╤В╨╛╨│╨╛ ╨║╨╛╨│╨┤╨░, ╨▓╤Л╨┐╨╛╨╗╨╜╤П╨╡╨╝╤Г╤О ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║╨╛╨╝ Brython ╨┐╨╛╤Б╨╗╨╡ ╨╖╨░╨│╤А╤Г╨╖╨║╨╕ ╤Б╤В╤А╨░╨╜╨╕╤Ж╤Л. ╨Ъ╨╛╨╝╨┐╨╕╨╗╤П╤Ж╨╕╤П ╨╕╨╜╨╕╤Ж╨╕╨╕╤А╤Г╨╡╤В╤Б╤П ╨┐╤А╨╕ ╨┐╨╛╨╝╨╛╤Й╨╕ ╨▓╤Л╨╖╨╛╨▓╨░ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ brython(), ╨╜╨░╨┐╤А╨╕╨╝╨╡╤А ╤З╨╡╤А╨╡╨╖ ╨┤╨╛╨▒╨░╨▓╨╗╨╡╨╜╨╕╨╡ ┬л┬╗. ╨Э╨░ ╨╛╤Б╨╜╨╛╨▓╨╡ Python ╨║╨╛╨┤╨░ ╤Д╨╛╤А╨╝╨╕╤А╤Г╨╡╤В╤Б╤П ╨┐╤А╨╡╨┤╤Б╤В╨░╨▓╨╗╨╡╨╜╨╕╨╡ ╨╜╨░ ╤П╨╖╤Л╨║╨╡ JavaScript, ╨║╨╛╤В╨╛╤А╨╛╨╡ ╨╖╨░╤В╨╡╨╝ ╨▓╤Л╨┐╨╛╨╗╨╜╤П╨╡╤В╤Б╤П ╤И╤В╨░╤В╨╜╤Л╨╝ JavaScript-╨┤╨▓╨╕╨╢╨║╨╛╨╝ ╨▒╤А╨░╤Г╨╖╨╡╤А╨░ (╨┤╨╗╤П ╤Б╤А╨░╨▓╨╜╨╡╨╜╨╕╤П, ╨┐╤А╨╛╨╡╨║╤В PyPy.js рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд╛рдпрдерди рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП asm.js рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдПрдХ CPython рджреБрднрд╛рд╖рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореВрд░реНрддрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ)ред

рд╡реЗрдм рдкреЗрдЬреЛрдВ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХрд╛ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдмрдВрдж рдХрд░реЗ рд╕реАрдкреАрдереЙрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдПред рджреЗрд░реА рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдмреНрд░рд╛рдпрдерди) рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрдЬрд╛рд░ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП)ред

рдЖрдпрд╛рдд рд╕рдордп
рдЧрдгрд┐рдд рдЖрдпрд╛рдд рдХрд░реЗрдВ

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдмреНрд░рд╛рдЙрдЬрд╝рд░.рдЯрд╛рдЗрдорд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ

рд╕рд╛рдордЧреНрд░реА = рджрд╕реНрддрд╛рд╡реЗрдЬрд╝["рд╕рд╛рдордЧреНрд░реА"]

...

рдХреИрдирд╡рд╛рд╕ = content.select_one(тАЬ.рдШрдбрд╝реАтАЭ)

рдпрджрд┐ hasattr(рдХреИрдирд╡рд╛рд╕, 'getContext'):
ctx = рдХреИрдирд╡рд╛рд╕.getContext("2d")

рдмреНрд░рд╛рдЙрдЬрд╝рд░.рдЯрд╛рдЗрдорд░.рд╕реЗрдЯ_рдЗрдВрдЯрд░рд╡рд▓(рд╕реЗрдЯ_рдХреНрд▓реЙрдХ, 100)
show_hours()
рдЕрдиреНрдп:
content.select_one('.navig_zone').html = "рдХреИрдирд╡рд╛рд╕ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ"

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ