рдкрд╛рдпрдерди 3 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ

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



рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрдерди 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдпрдерди рдХреЗ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред

рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (3.6+)


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

 user = "Jane Doe" action = "buy" log_message = 'User {} has logged in and did an action {}.'.format( user, action ) print(log_message) # User Jane Doe has logged in and did an action buy. 

рдкрд╛рдпрдерди 3, format рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ ( f- рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ , f- рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓рд╛ рдЙрдкрдХрд░рдг рд╣реИрдВред рдпрд╣рд╛рдБ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд╕реНрд╡рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:

 user = "Jane Doe" action = "buy" log_message = f'User {user} has logged in and did an action {action}.' print(log_message) # User Jane Doe has logged in and did an action buy. 

Pathlib рдореЙрдбреНрдпреВрд▓ (3.4+)


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

 from pathlib import Path root = Path('post_sub_folder') print(root) # post_sub_folder path = root / 'happy_user' #    print(path.resolve()) # /home/weenkus/Workspace/Projects/DataWhatNow-Codes/how_your_python3_should_look_like/post_sub_folder/happy_user 

рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди (3.5+)


рдХреМрди рд╕рд╛ рдмреЗрд╣рддрд░ рд╣реИ - рд╕реНрдерд┐рд░ рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ? рд╢рд╛рдпрдж рд▓рдЧрднрдЧ рд╣рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдХрдард┐рди рд╕рд╡рд╛рд▓ рдХрд╛ рдЕрдкрдирд╛ рдЬрд╡рд╛рдм рд╣реИред рдореИрдВ рдЗрд╕реЗ рдкрд╛рдардХ рддрдХ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреИрд╕реЗ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рд╕рднреА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди 3 рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

 def sentence_has_animal(sentence: str) -> bool: return "animal" in sentence sentence_has_animal("Donald had a farm without animals") # True 

рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг (3.4+)


рдкрд╛рдпрдерди 3 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, Enum рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрдВрддреНрд░ред рдЧрдгрдирд╛ рд╕реВрдЪреА рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд▓рдЧрд╛рддрд╛рд░, рдЕрдиреНрдпрдерд╛, рдХреЛрдб рдореЗрдВ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВред

 from enum import Enum, auto class Monster(Enum):   ZOMBIE = auto()   WARRIOR = auto()   BEAR = auto()  print(Monster.ZOMBIE) # Monster.ZOMBIE 

рдкрд╛рдпрдерди 3 рдкреНрд░рд▓реЗрдЦрди рд╕реЗ , рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЧрдгрдирд╛ рдЕрджреНрд╡рд┐рддреАрдп, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд╛рдореЛрдВ (рд╕рджрд╕реНрдпреЛрдВ) рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рд╕реВрдЪреА рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЧрдгрдирд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 for monster in Monster:   print(monster) # Monster.ZOMBIE # Monster.WARRIOR # Monster.BEAR 

рдирд┐рд░реНрдорд┐рдд LRU рдХреИрд╢ (3.2+)


рдЖрдЬрдХрд▓, рд▓рдЧрднрдЧ рд╕рднреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдпрдерди 3 рдмрд╣реБрдд рд╣реА рд▓реНрд░реВ_рдХреИрд╢ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ LRU рдХреИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ( рдХрдо рд╕реЗ рдХрдо рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдиреАрдЪреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рди рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 import time def fib(number: int) -> int:   if number == 0: return 0   if number == 1: return 1     return fib(number-1) + fib(number-2) start = time.time() fib(40) print(f'Duration: {time.time() - start}s') # Duration: 30.684099674224854s 

рдЕрдм рд╣рдо рдЗрд╕ рдлрдВрдХреНрд╢рди рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lru_cache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рддрдХрдиреАрдХ рдХреЛ lru_cache рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдирддреАрдЬрддрди, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗрдХрдВрдб рдореЗрдВ рдорд╛рдкрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм рдиреИрдиреЛрд╕реЗрдХрдВрдб рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред

 from functools import lru_cache @lru_cache(maxsize=512) def fib_memoization(number: int) -> int:   if number == 0: return 0   if number == 1: return 1     return fib_memoization(number-1) + fib_memoization(number-2) start = time.time() fib_memoization(40) print(f'Duration: {time.time() - start}s') # Duration: 6.866455078125e-05s 

рдЕрдиреБрдкрдпреЛрдЧреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреИрдХ рдХрд░рдирд╛ (3.0+)


рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЙрди рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдирд╛рдо рддрд╛рд░рд╛рдВрдХрди рд╕реЗ рдкрд╣рд▓реЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдЬреЛ рдЕрдиреНрдп рдЪрд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдРрд╕реЗ рдЪрд░ рдореЗрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, range(5) рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рд╕реВрдЪреА рд╕реЗ рдкрд╣рд▓рд╛ рдФрд░ рдЕрдВрддрд┐рдо рдорд╛рди рдЪрд░ head рдФрд░ tail ред рдкрд╣рд▓реА рдФрд░ рдЖрдЦрд┐рд░реА рд╡реИрд▓реНрдпреВ рдХреЗ рдмреАрдЪ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ body рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИред

 head, *body, tail = range(5) print(head, body, tail) # 0 [1, 2, 3] 4 py, filename, *cmds = "python3.7 script.py -n 5 -l 15".split() print(py) print(filename) print(cmds) # python3.7 # script.py # ['-n', '5', '-l', '15'] first, _, third, *_ = range(10) print(first, third) # 0 2 

рдбреЗрдЯрд╛ рдХрдХреНрд╖рд╛рдПрдВ (3.7+)


рдкрд╛рдпрдерди 3 рдиреЗ рдбреЗрдЯрд╛ рдХрдХреНрд╖рд╛рдПрдВ рд╢реБрд░реВ рдХреАрдВ ред рд╡реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ dataclass рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ __init__() рдФрд░ __repr__() ред рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рда рдореЗрдВ , рдЙрдиреНрд╣реЗрдВ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЯреБрдкрд▓реНрд╕ рдирд╛рдо рдХрд╛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред dataclass рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 class Armor:     def __init__(self, armor: float, description: str, level: int = 1):       self.armor = armor       self.level = level       self.description = description                  def power(self) -> float:       return self.armor * self.level  armor = Armor(5.2, "Common armor.", 2) armor.power() # 10.4 print(armor) # <__main__.Armor object at 0x7fc4800e2cf8> 

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА dataclass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ dataclass :

 from dataclasses import dataclass @dataclass class Armor:   armor: float   description: str   level: int = 1     def power(self) -> float:       return self.armor * self.level  armor = Armor(5.2, "Common armor.", 2) armor.power() # 10.4 print(armor) # Armor(armor=5.2, description='Common armor.', level=2) 

рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рд╕рдорд░реНрдерди __init__.py рдлрд╝рд╛рдЗрд▓ (3.3+) рдХреЗ рдмрд┐рдирд╛


рдкрд╛рдпрдерди рдХреЛрдб рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ (рдкреИрдХреЗрдЬ рдЙрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд░рдЦреЗ рдЧрдП рд╣реИрдВ рдЬрд┐рдирдореЗрдВ __init__.py рдлрд╝рд╛рдЗрд▓ рд╣реИ)ред рдпрд╣рд╛рдБ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 sound/                                 __init__.py                 sound     formats/                                   __init__.py             wavread.py             wavwrite.py             aiffread.py             aiffwrite.py             auread.py             auwrite.py             ...     effects/                                  __init__.py             echo.py             surround.py             reverse.py             ...     filters/                                 __init__.py             equalizer.py             vocoder.py             karaoke.py             ... 

рдкрд╛рдпрдерди 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ __init__.py рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред Python 3 рдореЗрдВ, Implicit Namespace Package рдлрд╝реАрдЪрд░ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдЗрди рдЬреИрд╕реЗ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

 sound/                                 __init__.py                 sound     formats/                                   wavread.py             wavwrite.py             aiffread.py             aiffwrite.py             auread.py             auwrite.py             ...     effects/                                  echo.py             surround.py             reverse.py             ...     filters/                                 equalizer.py             vocoder.py             karaoke.py             ... 

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП __init__.py рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреИрдХреЗрдЬ рдПрдХ рддрдерд╛рдХрдерд┐рдд рдиреЗрдорд╕реНрдкреЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдкрд╛рдпрдерди 3 рдХреА рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЖрдк рдпрд╣рд╛рдВ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ?

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


All Articles