рдкрд░рд┐рдЪрдп

рдореИрдЧреНрдбреЗрд▓реЗрдирд╛ рдЯреЛрдореНрдЬрд╝реЗрдХ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рддреНрд░рдг
рджреВрд╕рд░рд╛ рднрд╛рдЧ
рдкрд╛рдпрдерди рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рднрд╛рд╖рд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп, рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рдо рдпрд╣ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕реЗ рдЬреБрдбрд╝реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЦреЛрдЬрдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдкрд╛рдпрдерди (3.6+) рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдбрд╛рдпрдирд╛рдорд┐рдХ рдбрдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд░рдЦрддреЗ рд╣реБрдП, рдпрд╣ рдЪрд░ рдкреНрд░рдХрд╛рд░реЛрдВ, рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ, рддрд░реНрдХреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рдиреЛрдВ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреЛрдб рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдореЗрд░рд╛ рдирд╛рдо рдПрдВрдбреНрд░реА рддрд┐рдЦреЛрдиреЛрд╡ рд╣реИ рдФрд░ рдореИрдВ рд▓рдореЛрдбрд╛ рдореЗрдВ рдмреИрдХрдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЗрдВ рд▓рдЧрд╛ рд╣реВрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ typing
рдПрдиреЛрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдПрдиреЛрдЯреЗрд╢рди рдЙрдкрдХрд░рдг
рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХрдИ рдкрд╛рдпрдерди рдЖрдИрдбреАрдИ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЧрд▓рдд рдХреЛрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдк рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрдХреЗрдд рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ Pycharm рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐

рдЯрд┐рдкреНрд╕:

рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдХрдВрд╕реЛрд▓ рд▓рд┐рдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ pylint рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╣реИ:
$ pylint example.py ************* Module example example.py:7:6: E1101: Instance of 'int' has no 'startswith' member (no-member)
рд▓реЗрдХрд┐рди рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ mypy рдорд┐рд▓рд╛:
$ mypy example.py example.py:7: error: "int" has no attribute "startswith" example.py:10: error: Unsupported operand types for // ("str" and "int")
рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, mypy рдФрд░ pycharm рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВред рдЖрдЧреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ mypy рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдХреЛрдб рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд┐рдирд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдФрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореВрд▓ рдмрд╛рддреЗрдВ
рдкрд╛рдпрдерди рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВред рдПрдХ рддрд░рдл, рдпрд╣ рдиреАрдЪреЗ рдХреА рдУрд░ рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рджреВрд╕рд░реА рдУрд░, рдЗрд╕рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕реАрдзреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдкрд░ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИрдВред
рдкрд╣рдЪрд╛рди рдХреЗ рдмрд╛рдж рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рдмрд╛рдж рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореВрд▓реНрдп рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
price: int = 5 title: str
рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЪрд░ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рдкрд╕реА рдорд╛рди рдХреЛ рддреАрд░ рдХреЗ рдмрд╛рдж ->
рдФрд░ рдЕрдВрддрд┐рдо рдмреГрд╣рджрд╛рдиреНрддреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
def indent_right(s: str, width: int) -> str: return " " * (max(0, width - len(s))) + s
рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ __init__
рдкрджреНрдзрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ
class Book: title: str author: str def __init__(self, title: str, author: str) -> None: self.title = title self.author = author b: Book = Book(title='Fahrenheit 451', author='Bradbury')
рд╡реИрд╕реЗ, рдбреЗрдЯрд╛рд╕рд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрдЯрд╛рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░
рдпрджреНрдпрдкрд┐ рдЖрдк рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, typing
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИрдВред
рдРрдЪреНрдЫрд┐рдХ
рдпрджрд┐ рдЖрдк рдЪрд░ рдХреЛ int
рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ None
рдХреЛ рднреА рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ None
, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА:
Incompatible types in assignment (expression has type "None", variable has type "int")
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ Optional
рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
from typing import Optional amount: int amount = None
рдХреЛрдИ
рдХрднреА-рдХрднреА рдЖрдк рд╕рдВрднрд╡ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк Any
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Mypy рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╢рдкрде рдирд╣реАрдВ рд▓реЗрдЧрд╛:
unknown_item: Any = 1 print(unknown_item) print(unknown_item.startswith("hello")) print(unknown_item // 0)
рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ рдХрд┐ object
рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд┐рдпрд╛ рдЬрд╛рдП? рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЗрд╡рд▓ object
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╣реА рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
unknown_object: object print(unknown_object) print(unknown_object.startswith("hello"))
рд╕рдВрдШ
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм рди рдХреЗрд╡рд▓ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ, рдЖрдк typing.Union
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдПрдиреЛрдЯреЗрд╢рдиред
def hundreds(x: Union[int, float]) -> int: return (int(x) // 100) % 10 hundreds(100.0) hundreds(100) hundreds("100")
рд╡реИрд╕реЗ, Optional[T]
рдПрдиреЛрдЯреЗрд╢рди Union[T, None]
рдмрд░рд╛рдмрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рд╕рдВрдЧреНрд░рд╣
рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рддрдВрддреНрд░ рд╕рд╛рдорд╛рдиреНрдп рддрдВрддреНрд░ ( рдЬреЗрдирд░рд┐рдХ , рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдЕрдзрд┐рдХ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реВрдЪрд┐рдпреЛрдВ
рдпрд╣ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рдЪрд░ рдореЗрдВ рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЖрдк рд╕реВрдЪреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреМрди рд╕реЗ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгреА рдЕрдм рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред typing.List
рд▓рд┐рдП typing.List
рд╣реИред рд╣рдордиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рдЗрд╕рдХреЗ рд╕рдорд╛рди, рд╣рдо рд╡рд░реНрдЧрд╛рдХрд╛рд░ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рд╕реВрдЪреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
titles: List[str] = ["hello", "world"] titles.append(100500)
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ: рдЖрдк Any
, Optional
, List
рдФрд░ рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдЗрдЯрдо рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ Any
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реВрдЪреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрдВ: typing.FrozenSet
ред рд╕реЗрдЯ рдФрд░ typing.FrozenSet
ред typing.FrozenSet
ред
tuples
рдЯреБрдкрд▓реНрд╕, рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдХреНрд╕рд░ рд╡рд┐рд╖рдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╣реИ: рд╡рд░реНрдЧ рдмреНрд░реИрдХреЗрдЯ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЯрдкрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рдХреЗ рд╕рдорд╛рди рдЯреНрдпреВрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ: рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ, рддреЛ рдЖрдк рджреАрд░реНрдШрд╡реГрддреНрдд ( ...
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддрддреНрд╡ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдиреЛрдЯреЗрд╢рди Tuple
рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ Tuple[Any, ...]
price_container: Tuple[int] = (1,) price_container = ("hello")
рд╢рдмреНрджрдХреЛрд╢реЛрдВ
рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, typing.Dict
ред typing.Dict
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
book_authors: Dict[str, str] = {"Fahrenheit 451": "Bradbury"} book_authors["1984"] = 0
рдЗрд╕реА рдкреНрд░рдХрд╛рд░ typing.DefaultDict
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкрд░рд┐рдгрд╛рдо рдкрд░рд┐рдгрд╛рдо
рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХрд┐рд╕реА рднреА рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВред
рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, print
рддрд░рд╣), рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ None
ред рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдо None
рднреА рдЙрдкрдпреЛрдЧ None
ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рд╡рд┐рдХрд▓реНрдк рд╣реЛрдВрдЧреЗ: рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ None
рд▓реМрдЯрдирд╛, рдПрдХ рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛, рдФрд░ рдмрд┐рдирд╛ рдХреЙрд▓ рдХрд┐рдП return
рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ред
def nothing(a: int) -> None: if a == 1: return elif a == 2: return None elif a == 3: return ""
рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрднреА рдирд╣реАрдВ рд▓реМрдЯрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ sys.exit
), рддреЛ рдЖрдкрдХреЛ NoReturn
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
def forever() -> NoReturn: while True: pass
рдпрджрд┐ рдпрд╣ рдПрдХ рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдПрдХ yield
, рддреЛ рдЖрдк рд▓реМрдЯреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП Iterable[T]
рдпрд╛ Generator[YT, ST, RT]
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
def generate_two() -> Iterable[int]: yield 1 yield "2"
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рдм рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, collections.abc.Iterator
рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ Iterator
typing.SupportsInt
, typing.SupportsInt
рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ __int__
рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП __call__
рдЬреЛ __call__
рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
рдорд╛рдирдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реНрдЯрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЗрдирд░рд┐рдХ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдХрд╛рдо рдХреЗ рддрдВрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред