@Pythonetc рдЬреВрди 2018


рдирдорд╕реНрдХрд╛рд░ред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдкрд░ рдпреБрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде @pythonetc рдлрд╝реАрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдЗрд╕ рдорд╣реАрдиреЗ рд╕реЗ, рд╣рдо рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдорд╣реАрдиреЗ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкрджреЛрдВ рдХреЗ рд╕рд╛рде рдЪрдпрди рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


рдХреЙрд▓ рдЪреЗрди рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░


рдЬрдм рдЖрдк рдХреБрдЫ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВред


рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрджрд░реНрдн рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?


рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ, рдЖрдк рд╕рдВрджрд░реНрдн рд░рдЦрд╡рд╛рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рднреА рд╣реИрдВред рд╢рд╛рдпрдж рдЖрдк рд╕рдордп-рд╕рдордп рдкрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рдЬрдм рдЖрдк рд▓реЙрдЧрд░ рдмрдирд╛рддреЗ рд╣реИрдВред


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдХреЙрд▓ рдХреА рдХрдИ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред threading рдореЙрдбреНрдпреВрд▓ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд threading.local() рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред threading.local() рдСрдмреНрдЬреЗрдХреНрдЯред рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ, рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реБрдП: threading.local().symbol = '@' ред


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


 import asyncio import sys global_symbol = '.' async def indication(timeout): while True: print(global_symbol, end='') sys.stdout.flush() await asyncio.sleep(timeout) async def sleep(t, indication_t, symbol='.'): loop = asyncio.get_event_loop() global global_symbol global_symbol = symbol loop.create_task(indication(indication_t)) await asyncio.sleep(t) loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.gather( sleep(1, 0.1, '0'), sleep(1, 0.1, 'a'), sleep(1, 0.1, 'b'), sleep(1, 0.1, 'c'), )) 

рдЬрдм рднреА рдЖрдк рдХреЛрд░рдЖрдЙрдЯ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЛ рдордЬрдмреВрд░ рдХрд░рдХреЗ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ aiotask_context рдореЙрдбреНрдпреВрд▓ aiotask_context , рдЬреЛ loop.set_task_factory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ loop.set_task_factory рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдХрд░реЗрдЧрд╛:


 import asyncio import sys import aiotask_context as context async def indication(timeout): while True: print(context.get('symbol'), end='') sys.stdout.flush() await asyncio.sleep(timeout) async def sleep(t, indication_t, symbol='.'): loop = asyncio.get_event_loop() context.set(key='symbol', value=symbol) loop.create_task(indication(indication_t)) await asyncio.sleep(t) loop = asyncio.get_event_loop() loop.set_task_factory(context.task_factory) loop.run_until_complete(asyncio.gather( sleep(1, 0.1, '0'), sleep(1, 0.1, 'a'), sleep(1, 0.1, 'b'), sleep(1, 0.1, 'c'), )) 

рдПрд╕рд╡реАрдЬреА рдмрдирд╛рдПрдВ


рдПрд╕рд╡реАрдЬреА рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреЛ XML рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЖрдХреГрддрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд╡рд┐ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд╛рд░рдВрдЧреА рд╡реГрддреНрдд рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 <svg xmlns="http://www.w3.org/2000/svg"> <circle cx="125" cy="125" r="75" fill="orange"/> </svg> 

рдЪреВрдВрдХрд┐ рдПрд╕рд╡реАрдЬреА рдПрдХреНрд╕рдПрдордПрд▓ рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдПрд╕рд╡реАрдЬреА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, lxml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рднреА svgwrite рдореЙрдбреНрдпреВрд▓, рд╕рд┐рд░реНрдл SVG рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЖрдк рд▓реЗрдЦ рдХреЗ рдЖрд░рдВрдн рдореЗрдВ рджреЗрдЦреЗ рдЧрдП рдЖрд░реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдХрдорд╛рди рдЕрдиреБрдХреНрд░рдо рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдмрд╛рд╣рд░реА рджрд╛рдпрд░реЗ рддрдХ рдкрд╣реБрдВрдЪ


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


 x = 1 def scope(): x = 2 def inner_scope(): print(x) # prints 2 inner_scope() scope() 

рд▓реЗрдХрд┐рди рдЪрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдирдпрд╛ рдЪрд░ рд╣рдореЗрд╢рд╛ рдореМрдЬреВрджрд╛ рджрд╛рдпрд░реЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ global рдпрд╛ nonlocal global nonlocal :


 x = 1 def scope(): x = 2 def inner_scope(): x = 3 print(x) # prints 3 inner_scope() print(x) # prints 2 scope() print(x) # prints 1 

global рдЖрдкрдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдиреЗрдорд╕реНрдкреЗрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ nonlocal рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ nonlocal рдкрд╛рдпрдерди рддрддреНрдХрд╛рд▓ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдЪрд░ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:


 x = 1 def scope(): x = 2 def inner_scope(): global x x = 3 print(x) # prints 3 inner_scope() print(x) # prints 2 scope() print(x) # prints 3 x = 1 def scope(): x = 2 def inner_scope(): nonlocal x x = 3 print(x) # prints 3 inner_scope() print(x) # prints 3 scope() print(x) # prints 1 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди


рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП python рдХрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп python foo.py рдХрдорд╛рдВрдб foo.py рд╕рд┐рд░реНрдл foo.py рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ foo.py


рдЖрдк python -m foo рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ foo рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо sys.path рдХреЛ sys.path рдореЗрдВ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рджреЗрдЧрд╛ред рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рдкрд╛рдпрдерди foo/__init__.py , рдФрд░ рдлрд┐рд░ foo/__main__.py ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ __name__ рдЪрд░ рд░рдирдЯрд╛рдЗрдо __init__.py рдФрд░ __main__.py рдкрд░ рд░рдирдЯрд╛рдЗрдо __main__ рдкрд░ __main__ ред


рдЖрдк python dir/ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ python dir.zip рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ python dir/__main__.py рд▓рд┐рдП рджрд┐рдЦреЗрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдпрд╣ dir/__main__.py , рддреЛ рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред


 $ ls foo __init__.py __main__.py $ cat foo/__init__.py print(__name__) $ cat foo/__main__.py print(__name__) $ python -m foo foo __main__ $ python foo/ __main__ $ python foo/__init__.py __main__ 

рдПрдХ рдпреБрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ рд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛


рдкрд╛рдЗрдерди 3.3 рд╕реЗ рдкрд╣рд▓реЗ, рдпреВрдирд┐рдХреНрд╕ рдпреБрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ datetime рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрджрд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред


рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рддрд░реАрдХрд╛ strftime рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ strftime рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ %s рд▓реЗрдиреЗ рд╕реЗ, рдЖрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 naive_time = datetime(2018, 3, 31, 12, 0, 0) utc_time = pytz.utc.localize(naive_time) ny_time = utc_time.astimezone( pytz.timezone('US/Eastern')) 

ny_time рдмрд┐рд▓реНрдХреБрд▓ ny_time рдХреЗ рд╕рдорд╛рди рд╕рдордп рд╣реИ, рд▓реЗрдХрд┐рди рдиреНрдпреВрдпреЙрд░реНрдХ рдореЗрдВ рдкреНрд░рдерд╛рдЧрдд рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 # utc_time datetime.datetime(2018, 3, 31, 12, 0, tzinfo=<UTC>) # utc_time datetime.datetime(2018, 3, 31, 8, 0, tzinfo=<DstTzInfo 'US/Eastern' ...>) 

рдпрджрд┐ рд╕рдордп рд╕рдорд╛рди рд╣реИ, рддреЛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:


 In : int(utc_time.strftime('%s')), int(ny_time.strftime('%s')) Out: (1522486800, 1522468800) 

рдЙрд╣, рдХреНрдпрд╛? рд╡реЗ рдЕрд▓рдЧ рдХреНрдпреЛрдВ рд╣реИрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП strftime рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╛рдпрдерди рдореЗрдВ, strftime рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ %s рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ strftime() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдВрджрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, datetime рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рд╣реИред


рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдШрдЯрд╛рд╡ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 In : epoch_start = pytz.utc.localize( datetime(1970, 1, 1)) In : (utc_time - epoch_start).total_seconds() Out: 1522497600.0 In : (utc_time - epoch_start).total_seconds() Out: 1522497600.0 

рдФрд░ рдпрджрд┐ рдЖрдк рдкрд╛рдпрдерди 3.3+ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк utc_time.timestamp() : utc_time.timestamp() рдХреА timestamp рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi416605/


All Articles