рдпрд╣ рдореЗрд░реА @pythonetc рдлреАрдб рд╕реЗ рдкрд╛рдпрдерди рдЯрд┐рдкреНрд╕ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЧреНрдпрд╛рд░рд╣рд╡рд╛рдВ рдЪрдпрди рд╣реИред
тЖР 
рдкрд┐рдЫрд▓рд╛ рд╕рдВрдЧреНрд░рд╣рдПрдХ рдирд┐рдпрдорд┐рдд рд▓рд╛рдЗрди рдкрд░ 
\ рд╡рд░реНрдг рдХрд╛ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИред 
\t рдПрдХ рдЯреИрдм рд╡рд░реНрдг рд╣реИ, 
\r рдПрдХ рдкрдВрдХреНрддрд┐ рд╡рд┐рд░рд╛рдо рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдЪреНрдЪреЗ рддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрдм 
r'\t' рд╕рд┐рд░реНрдл рдмреИрдХрд╕реНрд▓реИрд╢ рдФрд░ 
t рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдк 
' рдЕрдВрджрд░ 
r'...' рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдФрд░ рдпрджреНрдпрдкрд┐ рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ 
\ _ рдХреЗ рд╕рд╛рде рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рд▓рд╛рдЗрди 
\ _ рдЕрднреА рднреА рдмрдиреА рд░рд╣реЗрдЧреА:
 >>> print(r'It\'s insane!') It\'s insane! 
рд╕реВрдЪреА рдЬрдирд░реЗрдЯрд░реЛрдВ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬреЛрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 
if рднрд╛рд╡ рд╣реИрдВ:
 In : [(x, y) for x in range(3) for y in range(3)] Out: [ (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2) ] In : [ (x, y) for x in range(3) for y in range(3) if x != 0 if y != 0 ] Out: [(1, 1), (1, 2), (2, 1), (2, 2)] 
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ 
for рдФрд░ 
if рд╕рднреА рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 In : [ (x, y) for x in range(3) for y in range(x + 2) if x != y ] Out: [ (0, 1), (1, 0), (1, 2), (2, 0), (2, 1), (2, 3) ] 
рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдЗрд╕рдореЗрдВ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 In : [ (x, y) for x in range(5) if x % 2 for y in range(x + 2) if x != y ] Out: [ (1, 0), (1, 2), (3, 0), (3, 1), (3, 2), (3, 4) ] 
sorted рдлрд╝рдВрдХреНрд╢рди 
sorted рдХрд╕реНрдЯрдо рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ 
key рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП:
 >>> x = [dict(name='Vadim', age=29), dict(name='Alex', age=4)] >>> sorted(x, key=lambda v: v['age']) [{'age': 4, 'name': 'Alex'}, {'age': 29, 'name': 'Vadim'}] 
рдХрд╛рд╢, рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ 
key рддрд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗред рдЙрдирдореЗрдВ рд╕реЗ рдЬреЛ рдЕрдлрд╡рд╛рд╣ рд╣реИрдВ, 
heapq (рдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдерди) рдФрд░ 
heapq (рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ) рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдЖрдк рдХрд╕реНрдЯрдо рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдЪрд┐рдд рддреБрд▓рдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ:
 >>> class User: ... def __init__(self, name, age): ... self.name = name ... self.age = age ... def __lt__(self, other): ... return self.age < other.age ... >>> x = [User('Vadim', 29), User('Alex', 4)] >>> [x.name for x in sorted(x)] ['Alex', 'Vadim'] 
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдРрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╣реИред
рдХрд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк tuples 
(a, b) рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ 
a рдХреА рддреБрд▓рдирд╛ (рдкреНрд░рд╛рдердорд┐рдХрддрд╛) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рд╣реИ, рдФрд░ 
b рдХрд╛ рдореВрд▓ рдореВрд▓реНрдп рд╣реИ:
 >>> users = [dict(name='Vadim', age=29), dict(name='Alex', age=4)] >>> to_sort = [(u['age'], u) for u in users] >>> [x[1]['name'] for x in sorted(to_sort)] ['Alex', 'Vadim'] 
рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ 
yield рдХреАрд╡рд░реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ:
 In : def f(): ...: pass ...: In : def g(): ...: yield ...: In : type(f()) Out: NoneType In : type(g()) Out: generator 
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЦрд╛рд▓реА рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 In : def g(): ...: if False: ...: yield ...: In : list(g()) Out: [] 
рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ 
yield from рд╕рд░рд▓ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрд╕реНрдХрд░рдг:
 def g(): yield from [] 
рдкрд╛рдпрдерди рдореЗрдВ, рдЖрдк рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 >>> 0 < 1 < 2 True >>> 0 < 1 < 0 False 
рдРрд╕реА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк 
> рдФрд░ 
< : рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
 >>> 0 < 1 > 2 False >>> 0 < 1 < 2 > 1 > 0 True 
== рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рднреА рд╕рдорд░реНрдерди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 
is рдФрд░ рдЗрд╕рдореЗрдВ:
 >>> [] is not 3 in [1, 2, 3] True 
рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд░ рджреЛ рдЖрд╕рдиреНрди рдСрдкрд░реЗрдВрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред 
a OP1 b OP2 c рдХрдбрд╝рд╛рдИ рд╕реЗ 
(a OP1 b) AND (b OP2 c) рдмрд░рд╛рдмрд░ рд╣реИред 
a рдФрд░ 
c рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ:
 class Spy: def __init__(self, x): self.x = x def __eq__(self, other): print(f'{self.x} == {other.x}') return self.x == other.x def __ne__(self, other): print(f'{self.x} != {other.x}') return self.x != other.x def __lt__(self, other): print(f'{self.x} < {other.x}') return self.x < other.x def __le__(self, other): print(f'{self.x} <= {other.x}') return self.x <= other.x def __gt__(self, other): print(f'{self.x} > {other.x}') return self.x > other.x def __ge__(self, other): print(f'{self.x} >= {other.x}') return self.x >= other.x s1 = Spy(1) s2 = Spy(2) s3 = Spy(3) print(s1 is s1 < s2 <= s3 == s3) 
рдкрд░рд┐рдгрд╛рдо:
 1 < 2 2 <= 3 3 == 3 True