рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрдерди рдЯрд┐рдкреНрд╕ рдЬреЛ рдЖрдк рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВред рднрд╛рдЧ реи

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



рд╕реНрд▓рд╛рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд▓рд╛рдЗрд╕ рдирд╛рдордХрд░рдг


рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдИ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдЧрдбрд╝рдмрдбрд╝реА рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ - рджреЛрдиреЛрдВ рд╕рдорд░реНрдерди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдФрд░ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ:

#       ID First Name   Last Name line_record = "2    John Smith" ID = slice(0, 8) FIRST_NAME = slice(9, 21) LAST_NAME = slice(22, 27) name = f"{line_record[FIRST_NAME].strip()} {line_record[LAST_NAME].strip()}" # name == "John Smith" 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд▓рд╛рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд▓рд╛рдЗрд╕ рдирд╛рдо рджреЗрдХрд░, рдФрд░ рдЗрди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрдЯрд┐рд▓ рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдЖрдк .start , .stop рдФрд░ .step рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ slice рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛


рдХрдИ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ getpass рдореЙрдбреНрдпреВрд▓ getpass рд╣реЛ рд╕рдХрддрд╛ getpass :

 import getpass user = getpass.getuser() password = getpass.getpass() #   ... 

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

рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдХрд░реАрдмреА рдореИрдЪ рдЦреЛрдЬрдирд╛


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

 import difflib difflib.get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'], n=2) # returns ['apple', 'ape'] 

difflib.get_close_matches рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, "рдкрд░реНрдпрд╛рдкреНрдд рдкрд░реНрдпрд╛рдкреНрдд" рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдЦреЛрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рддрд░реНрдХ рдЙрд╕ рд╕реВрдЪреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ n рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд▓реМрдЯрд╛рдП рдЧрдП рдореИрдЪреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдорд┐рдд рддрд░реНрдХ cutoff рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ 0.6 рд╕реЗрдЯ рд╣реИ), рдЬреЛ рдЖрдкрдХреЛ рдореИрдЪреЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдереНрд░реЗрд╢реЛрд▓реНрдб рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

IP рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


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

 import ipaddress net = ipaddress.ip_network('74.125.227.0/29') #      IPv6 # IPv4Network('74.125.227.0/29') for addr in net:    print(addr) # 74.125.227.0 # 74.125.227.1 # 74.125.227.2 # 74.125.227.3 # ... 

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

 ip = ipaddress.ip_address("74.125.227.3") ip in net # True ip = ipaddress.ip_address("74.125.227.12") ip in net # False 

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

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд┐рдмрдЧрд┐рдВрдЧ


рдпрджрд┐ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рд╣реИрдВ рдЬреЛ IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ Vim рдпрд╛ Emacs рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ IDE рдореЗрдВ рдбрд┐рдмрдЧрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдФрд░ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХреНрдпрд╛? рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдбрд┐рдмрдЧрд░ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ python3.8 -i рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо python3.8 -i ред -i рдЭрдВрдбрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЪрд░ рдФрд░ рдХреЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдбрд┐рдмрдЧрд░ (рдкреАрдбреАрдмреА) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЪрд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдб script.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ:

 def func():    return 0 / 0 func() 

рдЗрд╕реЗ python3.8 -i script.py рдФрд░ рдирд┐рдореНрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 #   ... Traceback (most recent call last):  File "script.py", line 4, in <module>    func()  File "script.py", line 2, in func    return 0 / 0 ZeroDivisionError: division by zero >>> import pdb >>> pdb.pm() #      > script.py(2)func() -> return 0 / 0 (Pdb) 

рд╣рдо рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрдЧрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИ рдереАред рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ:

 def func():    breakpoint() # import pdb; pdb.set_trace()    return 0 / 0 func() 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред

script.py(3)func()
-> return 0 / 0
(Pdb) #
(Pdb) step
ZeroDivisionError: division by zero
> script.py(3)func()
-> return 0 / 0
(Pdb)

рдЬреНрдпрд╛рджрд╛рддрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП print рдХрдорд╛рдВрдб рдФрд░ рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдо рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреЛ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ, рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╕ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред рдкреАрдбреАрдмреА рдПрдХ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд╛рдпрдерди рдЖрд╡рд░рдг рд╣реИред рдЗрд╕ рд╢реЗрд▓ рдореЗрдВ, рдЖрдк рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд┐рдмрдЧрд░ рдХрдорд╛рдВрдб рдХрд╛рдо рдЖрдПрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред

рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдХрдИ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛


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

 import datetime class Date:    def __init__(self, year, month, day):        self.year = year        self.month = month        self.day = day    @classmethod    def today(cls):        t = datetime.datetime.now()        return cls(t.year, t.month, t.day) d = Date.today() print(f"{d.day}/{d.month}/{d.year}") # 14/9/2019 

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ __init__ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рд╕рднреА рддрд░реНрдХ рд░рдЦрдиреЗ рдФрд░ *args , **kwargs рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ if рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реБрднрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХрд╛рд░реНрдп рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдореИрдВ __init__ рдореЗрдВ рдиреНрдпреВрдирддрдо рддрд░реНрдХ рд░рдЦрдиреЗ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ / рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдПрдХ рд╕рд╛рдл рдХреЛрдб рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдФрд░ рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдХреИрд╢рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ


рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд▓рдВрдмреЗ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди, рдпрд╛ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ? рдЙрд╕реА рд╕рдордп, рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧреА? рдЖрдк functools рдореЙрдбреНрдпреВрд▓ рд╕реЗ lru_cache рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢ (рдпрд╛рдж) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 from functools import lru_cache import requests @lru_cache(maxsize=32) def get_with_cache(url):    try:        r = requests.get(url)        return r.text    except:        return "Not Found" for url in ["https://google.com/",            "https://martinheinz.dev/",            "https://reddit.com/",            "https://google.com/",            "https://dev.to/martinheinz",            "https://google.com/"]:    get_with_cache(url) print(get_with_cache.cache_info()) # CacheInfo(hits=2, misses=4, maxsize=32, currsize=4) 

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

рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ


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

 from collections import Counter cheese = ["gouda", "brie", "feta", "cream cheese", "feta", "cheddar",          "parmesan", "parmesan", "cheddar", "mozzarella", "cheddar", "gouda",          "parmesan", "camembert", "emmental", "camembert", "parmesan"] cheese_count = Counter(cheese) print(cheese_count.most_common(3)) # : [('parmesan', 4), ('cheddar', 3), ('gouda', 2)] 

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

 print(cheese_count["mozzarella"]) # : 1 cheese_count["mozzarella"] += 1 print(cheese_count["mozzarella"]) # : 2 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Counter рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ update(more_words) рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Counter рдХреА рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди (рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЬ рджрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╛рдпрдерди рдореЗрдВ рд▓рдЧрднрдЧ рд░реЛрдЬ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рдкрд╛рдПрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рдЬрд╛рдирддреЗ рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

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


All Articles