pythonic

рддреЛ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЬрдм рдХреЛрдИ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдлреВ рдкрд╛рдЗрдереЛрдирд┐рдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЬрдм рдХреЛрдИ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рд╣реИ? рдЖрдЗрдП рдЗрд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

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

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

Pythonicity рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛, Python рдХреА рдиреНрдпреВрдирддрдо рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдмрд╣реБрдд рдирд┐рдХрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдкреНрд░рд╕реНрдерд╛рди "рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред" рдЕрдкрдардиреАрдп рдХреЛрдб, рдпрд╛ рдЕрдХрд▓реНрдкрдиреАрдп рдореБрд╣рд╛рд╡рд░реЗ - рдпрд╣ рд╕рдм рдХреБрдЫ рдЕрдкреНрд░рд╕рд╛рдВрдЧрд┐рдХ рд╣реИред

рдПрдХ рднрд╛рд╖рд╛ рд╕реЗ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░, рдХреБрдЫ рдЪреАрдЬреЗрдВ тАЬрд╕реАрдЦреАтАЭ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрдЧреА?


рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣рдорд╛рд░рд╛ рдорд┐рддреНрд░ рд╣реИред рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

>>> foo = "/home/sa" >>> baz = "somefile" >>> foo + "/" + baz # unpythonic '/home/sa/somefile' >>> import os.path >>> os.path.join(foo, baz) # pythonic '/home/sa/somefile' >>> 

Os.path рдореЗрдВ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп: basename () , dirname (), рдФрд░ splitext () ред

 >>> somefoo = list(range(9)) >>> somefoo [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> import random >>> random.shuffle(somefoo) # pythonic >>> somefoo [8, 4, 5, 0, 7, 2, 6, 3, 1] >>> max(somefoo) # pythonic 8 >>> min(somefoo) # pythonic 0 >>> 

рдХрдИ рдЙрдкрдпреЛрдЧреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдХрдИ рд▓реЛрдЧ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо () рдФрд░ рдЕрдзрд┐рдХрддрдо () ред рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ , рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

рдЦрд╛рд▓реА рд╕реВрдЪреА, рдЯреБрдкрд▓реНрд╕, рд╢рдмреНрджрдХреЛрд╢, рдЖрджрд┐ рдмрдирд╛рдПрдБред



 >>> bar = list() # unpythonic >>> type(bar) <class 'list'> >>> del bar >>> bar = [] # pythonic >>> type(bar) <class 'list'> >>> foo = {} >>> type(foo) <class 'dict'> >>> baz= set() # {} is a dictionary so we need to use set() >>> type(baz) <class 'set'> >>> 


рдмреИрдХрд▓реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдпрдерди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рд▓рд╛рдЗрди рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреВрдЯрддрд╛ рд╣реИ, рдФрд░ рддрдм рд╕реЗ рднрд╛рд╡ рдмрд╣реБрдд рдмрд╛рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдХрдИ рд▓реЛрдЧ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

 if foo.bar()['first'][0] == baz.ham(1, 2)[5:9] and \ # unpythonic verify(34, 20) != skip(500, 360): pass 


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

 value = foo.bar()['first'][0]*baz.ham(1, 2)[5:9] \ # unpythonic + verify(34, 20)*skip(500, 360) 


рддрдм рдпрд╣ рдмрд╕ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдЧрд╛ред рдХреЛрд╖реНрдардХ рдореЗрдВ рдирд┐рд╣рд┐рдд рд░реЗрдЦрд╛ рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред рдПрдХ рд╕рдорд╛рди рдХреЛрдб рдмреБрд▓реЗрдЯрдкреНрд░реВрдл рд╣реИ:

 value = (foo.bar()['first'][0]*baz.ham(1, 2)[5:9] # pythonic + verify(34, 20)*skip(500, 360)) 


рдЖрдпрд╛рдд


" рдлреВ рдЖрдпрд╛рдд * рд╕реЗ " рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рдЕрдкрд╡рд╛рдж


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

 try: foo = opne("somefile") # misspelled "open" except: sys.exit("could not open file!") 

рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдПрдХ " NameError " рдХреЛ рдлреЗрдВрдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рд╢рдмреНрджрд╢рдГ рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ " IOError " рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП "рдЫреЛрдбрд╝рдХрд░" рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдпрд╣ рдХреЛрдб рд▓рд┐рдЦреЗрдВ:

 try: foo = opne("somefile") except IOError: sys.exit("could not open file") 

рдЬрдм рдЖрдк рдпрд╣ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рдпрдерди "NameError" рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдФрд░ рдЖрдк рддреБрд░рдВрдд рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред

рдЪреВрдБрдХрд┐ " SystemExit ", " KeyboardInterrupt ", рдФрд░ " GeneratorExit " (рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкрдХрдбрд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП) рд╕рд╣рд┐рдд рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рд╡реИрд╕реЗ рднреА рдПрдХ рдирдВрдЧреЗ "рдЫреЛрдбрд╝рдХрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдЕрднреА рднреА рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - " рдЕрдкрд╡рд╛рдж "ред

рд╣рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ



 >>> counter = 0 # unpythonic >>> while counter < 10: ... # do some stuff ... counter += 1 ... ... >>> counter 10 >>> for counter in range(10): # pythonic ... # do some stuff ... pass ... ... >>> 

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:

 >>> food = ['donkey', 'orange', 'fish'] >>> for i in range(len(food)): # unpythonic ... print(food[i]) ... ... donkey orange fish >>> for item in food: # pythonic ... print(item) ... ... donkey orange fish >>> 


рд╕реНрдкрд╖реНрдЯ рдЗрдЯрд░реЗрдЯрд░


рдкрд╛рдпрдерди рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ... рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 >>> counter = 0 # unpythonic >>> while counter < len(somecontainer): ... callable_consuming_container_elements(somecontainer[counter]) ... counter += 1 ... ... >>> for item in somecontainer: # pythonic ... callable_consuming_container_elements(item) ... ... >>> 

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

 >>> somecontainer = list(range(7)) >>> type(somecontainer) <class 'list'> >>> somecontainer [0, 1, 2, 3, 4, 5, 6] >>> somecontaineriterator = iter(somecontainer) >>> type(somecontaineriterator) <class 'list_iterator'> 

рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 >>> for item in somecontaineriterator: # start consuming the iterable somecontainer ... if item < 4: ... print(item) ... ... else: ... break # breaks out of the nearest enclosing for/while loop ... ... ... 0 1 2 3 

рдореВрд░реНрдЦ рдордд рдмрдиреЛ, itter " somecontaineriterator [5] " рдкрд░ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдЬреЛ 4 рд╣реИ, 3 рдирд╣реАрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

 >>> print("Something unrelated to somecontaineriterator.") Something unrelated to somecontaineriterator. >>> next(somecontaineriterator) # continues where previous for/while loop left off 5 >>> next(somecontaineriterator) 6 >>> next(somecontaineriterator) Traceback (most recent call last): # we have exhausted the iterator File "<input>", line 1, in <module> StopIteration >>> 

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рд▓реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╕рд░рдгреА рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд╕реВрдЪрдХрд╛рдВрдХ 5 рдкрд░ рдмреНрд░реЗрдХ рджреНрд╡рд╛рд░рд╛ рд▓реВрдк рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ (рдЕрдВрджрд░ рдореВрд▓реНрдп 4 рд╣реИ)ред рдлрд┐рд░ рд╣рдо рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдо рдкрд╛рда рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рд╡рд╣ рд╕рдм рд╣реИред

рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ


рдпрд╣рд╛рдВ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реВрдкреНрд╕ рдХреЗрд╡рд▓ рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реЛ


рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓реВрдк рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдкрд╛рдпрдерди рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рдЬрд╝рд┐рдк () , рдиреНрдпреВрдирддрдо () , рдЕрдзрд┐рдХрддрдо () рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, рдпреЗ "рд▓рд┐рд╕реНрдЯ рдХреЙрдореНрдкреНрд░рд┐рд╣реЗрдВрд╢рди", рдЬрдирд░реЗрдЯрд░, "рд╕реЗрдЯ рдХреЙрдореНрдкреНрд░рд┐рд╣реЗрдВрд╢рди", рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВред

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

 sa@wks:/tmp$ cat people.txt Dora John Dora Mike Dora Alex Alex sa@wks:/tmp$ python >>> with open('people.txt', encoding='utf-8') as a_file: # context manager ... { line.strip() for line in a_file } # set comprehension ... ... {'Alex', 'Mike', 'John', 'Dora'} >>> 

рдХреЛрдИ рд▓реВрдк рдирд╣реАрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП, рд╕рднреА рдкрд╛рдпрдереЛрдирд┐рдХ; -]

рдЯреНрдпреВрдкрд▓ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ


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

рд╕рдВрдкреВрд░реНрдг рдЗрд╕рдХреЗ рднрд╛рдЧреЛрдВ рдХреЗ рдпреЛрдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
- рдЕрд░рд╕реНрддреВ (384 рдИрд╕рд╛ рдкреВрд░реНрд╡ - 322 рдИрд╕рд╛ рдкреВрд░реНрд╡)


 >>> person = ("Steve", 23, "male", "London") >>> print("{} is {}, {} and lives in {}.".format(person[0], person[1], person[2], person[3])) Steve is 23, male and lives in London. >>> person = ("male", "Steve", 23, "London") #different tuple, same code >>> print("{} is {}, {} and lives in {}.".format(person[0], person[1], person[2], person[3])) male is Steve, 23 and lives in London. >>> 

рдЯрдкрд▓ рдореЗрдВ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдПрдХ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рднрд╛рд░ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:

 >>> foo = 2011, 11, 3, 15, 23, 59 >>> foo (2011, 11, 3, 15, 23, 59) # tuple >>> list(range(9)) [0, 1, 2, 3, 4, 5, 6, 7, 8] # list >>> 


рджреЛрдиреЛрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрдерди рдбреАрдмреА рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рднреНрд░реВрдг () рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдХрдХреНрд╖рд╛рдПрдВ рд╕рдореВрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИрдВ


C # рдФрд░ Java рдореЗрдВ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╡рд╛рджреА рд╡рд░реНрдЧ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдп рдкрд╛рдк () ред рдкрд╛рдпрдерди рдореЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 sa@wks:/tmp$ echo -e 'def sin():\n pass' > foo.py; cat foo.py def sin(): pass sa@wks:/tmp$ python >>> import foo >>> foo.sin() >>> 


рдЧреЗрдЯрд░реНрд╕ рдПрдВрдб рд╕реЗрдЯрд░реНрд╕ рдХреЛ рдирд╛ рдХрд╣реЗрдВ


рдкрд╛рдЗрдерди рдореЗрдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдирд╣реАрдВред рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрдерд╛рдХрдерд┐рдд рдХреЛрдб (рдкрдврд╝реЗрдВ, рд╕реНрдерд┐рд░ рдПрдкреАрдЖрдИ) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдп рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ


рдЕрдЬрдЧрд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдХрд╛рд░реНрдп рднреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдХрд╛рд░реНрдп рд╡реЗ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 >>> somefoo = [{'price': 9.99}, {'price': 4.99}, {'price': 10}] >>> somefoo [{'price': 9.99}, {'price': 4.99}, {'price': 10}] >>> def lookup_price(someobject): ... return someobject['price'] ... ... >>> somefoo.sort(key=lookup_price) # pass function object lookup_price >>> somefoo [{'price': 4.99}, {'price': 9.99}, {'price': 10}] # in-place sort of somefoo took place >>> type(somefoo) <class 'list'> >>> type(somefoo[0]) <class 'dict'> >>> 

рд▓реБрдХрдЕрдк_рдкреНрд░рд╛рдЗрд╕ рдФрд░ рд▓реБрдХрдЕрдк_рдкреНрд░рд╛рдЗрд╕ () рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реЛрддрд╛ рд╣реИ - рдмрд╛рдж рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рд▓реБрдХрдЕрдк_рдкреНрд░рд╛рдЗрд╕ рдирд╛рдордХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИред

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


All Articles