рдЕрдЬрдЧрд░ рдЕрдЬреНрдЮрд╛рдд

рд╣реИрдмреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд▓реЗрдЦ / рдЕрдиреБрд╡рд╛рдж рд╣реИрдВ рдЬреЛ рдкрд╛рдпрдерди рдХреА рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ / рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ / рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рдХрд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ - рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред

рдЪреЗрдирд┐рдВрдЧ рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ:

>>> 1 < 5 < 10 True >>> 1 < 11 < 10 False >>> 1 < 11 > 10 True 

рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХреЛрд╖реНрдардХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рд╕рднреА рдЬрд╛рджреВ рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ:

 >>> (1 < 11) > 10 False 

рдбреЙрдХреНрдЯрд░

iter рдФрд░ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреБрдирд░рд╛рд╡реГрддреНрдд рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд░рд┐рдд рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓рд╛ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ - рдкрд╣рд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо, рдЬрд┐рд╕ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд╣рд▓реА рдЦрд╛рд▓реА рд▓рд╛рдЗрди рддрдХ рдкрдврд╝рддреЗ рд╣реИрдВ:
 with open('mydata.txt') as fp: for line in iter(fp.readline, ''): process_line(line) 

рдбреЙрдХреНрдЯрд░

contextlib

рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд╕реНрддреБрдУрдВ, рдХрд╛рд░реНрдпреЛрдВ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП VAR рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг:
 from contextlib import contextmanager @contextmanager def tag(name): print "[%s]" % name yield print "[/%s]" % name >>> with tag("h1"): ... print "foo" ... [h1] foo [/h1] 

рдбреЛрдХрд╛ , рдкреАрдИрдкреА 343

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реНрдХ

рдХрдИ "рд╣реИрдХ" рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ:
 >>> def foo(a=list()): ... a.append(1) ... print a ... >>> foo() [1] >>> foo() [1, 1] >>> foo() [1, 1, 1] 

рдРрд╕рд╛ рдХреНрдпреЛрдВ? рддрд░реНрдХреЛрдВ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ func_defaults рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 >>> foo.func_defaults ([1, 1, 1],) 


рд▓реЗрдХрд┐рди рдЙрдкрд╛рдВрдЧ рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧреА рдиреБрд╕реНрдЦрд╛ рдореЗрдВ рд╣реИред рдирд┐рдореНрди рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
 >>> l = [] >>> for i in range(3): ... l.append(lambda: i * 2) ... >>> for x in l: ... x() ... 4 4 4 

рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдмрд╕ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдмрджрд▓реЗрдВ : i * 2 рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рд╛рде i = i: i * 2 :
 >>> l = [] >>> for i in range(3): ... l.append(lambda i=i: i * 2) ... >>> for x in l: ... x() ... 0 2 4 

рдЖрдк рдирд┐рд╖реНрдкрд╛рджрди рдореЙрдбрд▓ рдореЗрдВ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдВрдбрд╛рдХрд╛рд░

рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ... (рддреАрди рдЕрдВрдХ) рдПрдХ рдорд╛рдиреНрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ, рд╕реВрдЪреА [...] ipsgetitem__ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдПрд▓рд┐рдкреНрд╕рд┐рд╕ рдХреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдФрд░ рдЕрдкрдиреА рддрд░рд╣ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХред рдкреНрд░рджрд░реНрд╢рди:
 >>> class L(list): ... def __getitem__(self, *args): ... print args ... return list.__getitem__(self, *args) ... >>> l[...] (Ellipsis,) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in __getitem__ TypeError: list indices must be integers, not ellipsis 

Numpy рдореЗрдВ рдЗрд╕ рдЖрдХрд░реНрд╖рдг рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди

10 рд╡реАрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛рддреНрдордХ рдкрд╛рда рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ рдереА - рдПрдХ рддрд┐рд╣рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдкрд╛рдпрдерди рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд╡рд╛рд▓ рднреА рдирд╣реАрдВ рд╣реИ:
 >>> a = 10 >>> b = 5 >>> a, b (10, 5) >>> a, b = b, a >>> a, b (5, 10) 


рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪреА рдХреА рд╕рдордЭ

рд╕реВрдЪреА рд╕рдордЭ рдореЗрдВ, рдЖрдк рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 >>> l = [[1,2,3], [4,5,6]] >>> [lll * 2 for ll in l for lll in ll] [2, 4, 6, 8, 10, 12] 


рдХрдИ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ 5 рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
 >>> l = [[]] * 5 >>> l [[], [], [], [], []] 

рд▓реЗрдХрд┐рди рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:
 >>> l[0].append(1) >>> l [[1], [1], [1], [1], [1]] 

рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдмреЗрд╣рддрд░:
 >>> l = [[] for _ in range(5)] 


рд░реЛрдЯ 13, string_escape, рдпреВрдирд┐рдХреЛрдб_рд╕реНрдХреЗрдк encodings

рд╕реБрдкрд░ рд╕реАрдХреНрд░реЗрдЯ Rot13 рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╡рд┐рдзрд┐ :
 >>> 'Hello world!'.encode('rot13') 'Uryyb jbeyq!' >>> 'Uryyb jbeyq!'.decode('rot13') u'Hello world!' 

рдЕрдЧрд▓рд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдЬрдмрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ \ n, \ t, \ r , рдЖрджрд┐ рд╣реИрдВред рдПрдХ рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реБрд░рдХреНрд╖рд┐рдд рдирд┐рдХрд╛рд╕реА рдХрд░реЗрдВ )?
 >>> s = 'Hello\\n\\rworld!' >>> s 'Hello\\n\\rworld!' >>> repr(s) "'Hello\\\\n\\\\rworld!'" >>> print s.decode('string_escape') Hello world! 

рдпреВрдирд┐рдХреЛрдб_рд╕реНрдХреЗрдк рдЗрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рд╛рде, рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред рд╡рд╣ рдпрд╣ рднреА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ '\ u0457' рдХреЛ ":" рдЕрдХреНрд╖рд░ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИ :
 >>> print '\u0457'.decode('unicode_escape') ╤Ч 

рд╕рдорд░реНрдерд┐рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рд╕реВрдЪреА рдорд╛рдирдХ-рдПрдирдХреЛрдбрд┐рдВрдЧ рд╣реИ ред

textwrap

рдЧреНрд░рдВрдереЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рд╣рдо рд▓рдВрдмреА рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реЗ рдЫреЛрдЯреЗ рдмрдирд╛рддреЗ рд╣реИрдВ:
 >>> s = "Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs." >>> print textwrap.fill(s, 25) Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. 

рдбреЙрдХ - рдЕрднреА рднреА рдмрд╣реБрдд рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣реИред

itertools

рд╕рд░рд╛рд╕рд░ рднрд╛рд╡рдирд╛ред рдкрдврд╝реЗрдВ-рдлрд┐рд░ рд╕реЗ рди рдкрдврд╝реЗрдВ, рд╡рд┐рд╢реЗрд╖рдХрд░ рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╛рдЧ ред рдпрд╣рд╛рдБ рдореБрдЭреЗ рдпрд╛рдж рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ:
 >>> def grouper(n, iterable, fillvalue=None): ... "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" ... args = [iter(iterable)] * n ... return izip_longest(fillvalue=fillvalue, *args) ... >>> list(grouper(2, [1,2,3,4,5,6])) [(1, 2), (3, 4), (5, 6)] >>> list(grouper(3, [1,2,3,4,5,6])) [(1, 2, 3), (4, 5, 6)] >>> list(grouper(4, [1,2,3,4,5,6], fillvalue=0)) [(1, 2, 3, 4), (5, 6, 0, 0)] 

рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рд╕рдорд╛рдкрди


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

PS рдЕрдЧрд░ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рд╣реИ - рдореИрдВ рдкреАрдПрдо рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

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


All Articles