рдЙрддреНрддрд░: рдЧрд▓рддрдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдкрд░реЗрд╢рди рд╣реИрдВ, рддреЛ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ:
1 < 3 = True, True( 1) < 2
рднреА
True
рд▓реМрдЯрдирд╛
1 < 3 = True, True( 1) < 2
, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ
False
ред
рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐
1 < 3 < 2
рдЕрд▓рдЧ рд╕рдВрдЪрд╛рд▓рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЬрдЯрд┐рд▓ рдПрдХ рд╣реИред рдЪрд▓реЛ рдЬреБрджрд╛ (рдПрдХ рдЕрдЬрдЧрд░ disassembler рдореЗрдВ) рд╣рдорд╛рд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд╣реИ:
from dis import dis dis(lambda: 1<3<2) 1 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (3) 6 DUP_TOP 7 ROT_THREE 8 COMPARE_OP 0 (<) 11 JUMP_IF_FALSE_OR_POP 21 14 LOAD_CONST 3 (2) 17 COMPARE_OP 0 (<) 20 RETURN_VALUE >> 21 ROT_TWO 22 POP_TOP 23 RETURN_VALUE
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рджреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рд╕реНрдЯреИрдХ рдХреЛ рдкрд▓рдЯ рджреЗрдВред 2 рд╕реНрдерд┐рд░рд╛рдВрдХ рдЦреАрдВрдЪреЛ, рддреБрд▓рдирд╛ рдХрд░реЗрдВред рд╣рдордиреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрд╛ред рдпрджрд┐ рдлреЙрд▓реНрд╕, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред рдпрджрд┐ Tru, рддреЛ рд╣рдо Tru рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рддреАрд╕рд░реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рджреЛрд╣рд░рд╛рдП рдЧрдПред рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ 1 <2 <3 <4 ... рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рдХреЛрдб рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛, рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдлрд┐рд░ рднреА рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рдСрдкрд░реЗрдЯрд░ рд╣реЛрдЧрд╛ред
рдФрд░ рдпрд╣рд╛рдБ рдХреЛрдб
1<3 and 3<2
ред рдпрд╣ рдмрд╣реБрдд рд░реИрдЦрд┐рдХ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ:
dis(lambda: 1<3 and 3<2) 1 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (3) 6 COMPARE_OP 0 (<) 9 JUMP_IF_FALSE_OR_POP 21 12 LOAD_CONST 2 (3) 15 LOAD_CONST 3 (2) 18 COMPARE_OP 0 (<) >> 21 RETURN_VALUE
рдРрд╕реЗ рдСрдкрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
1<3 and 3<2
рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ yaml рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реВрдВ:
age: title: Age items: 1: up to 18 2: 18-25 3: above 25
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб:
def range_age(age): for k, v in data['age'].items.items(): v = v.replace('up to','{}<') v = v.replace('above','{}>') v = v.replace('-','<={}<=') if eval(v.format(age)): return k
рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рдкреБрдирд╢реНрдЪред рдХреНрдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреЛрдИ рд╕рдорд╛рди, рдЬрдЯрд┐рд▓ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ?