Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- >>> def foo(x):
- ... if isinstance(x, str):
- ... return {"a": 1, "b": 2}[x]
- ... elif isinstance(x, int):
- ... return [2, 4, 6][x]
- ... else:
- ... raise TypeError("...")
- ...
- >>> def test1():
- ... try:
- ... foo("c")
- ... except:
- ... print("exc")
- ...
- >>> def test2():
- ... try:
- ... foo("c")
- ... except (KeyError, IndexError):
- ... print("knownException")
- ... except:
- ... print("exc")
- ...
- >>> def test3():
- ... try:
- ... foo("c")
- ... except KeyError:
- ... print("key")
- ... except IndexError:
- ... print("index")
- ... except:
- ... print("exc")
- ...
- >>> import dis
- >>> dis.dis(test1)
- 2 0 SETUP_EXCEPT 14 (to 17)
- 3 3 LOAD_GLOBAL 0 (foo)
- 6 LOAD_CONST 1 ('c')
- 9 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 12 POP_TOP
- 13 POP_BLOCK
- 14 JUMP_FORWARD 18 (to 35)
- 4 >> 17 POP_TOP
- 18 POP_TOP
- 19 POP_TOP
- 5 20 LOAD_GLOBAL 1 (print)
- 23 LOAD_CONST 2 ('exc')
- 26 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 29 POP_TOP
- 30 POP_EXCEPT
- 31 JUMP_FORWARD 1 (to 35)
- 34 END_FINALLY
- >> 35 LOAD_CONST 0 (None)
- 38 RETURN_VALUE
- >>> dis.dis(test2)
- 2 0 SETUP_EXCEPT 14 (to 17)
- 3 3 LOAD_GLOBAL 0 (foo)
- 6 LOAD_CONST 1 ('c')
- 9 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 12 POP_TOP
- 13 POP_BLOCK
- 14 JUMP_FORWARD 51 (to 68)
- 4 >> 17 DUP_TOP
- 18 LOAD_GLOBAL 1 (KeyError)
- 21 LOAD_GLOBAL 2 (IndexError)
- 24 BUILD_TUPLE 2
- 27 COMPARE_OP 10 (exception match)
- 30 POP_JUMP_IF_FALSE 50
- 33 POP_TOP
- 34 POP_TOP
- 35 POP_TOP
- 5 36 LOAD_GLOBAL 3 (print)
- 39 LOAD_CONST 2 ('knownException')
- 42 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 45 POP_TOP
- 46 POP_EXCEPT
- 47 JUMP_FORWARD 18 (to 68)
- 6 >> 50 POP_TOP
- 51 POP_TOP
- 52 POP_TOP
- 7 53 LOAD_GLOBAL 3 (print)
- 56 LOAD_CONST 3 ('exc')
- 59 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 62 POP_TOP
- 63 POP_EXCEPT
- 64 JUMP_FORWARD 1 (to 68)
- 67 END_FINALLY
- >> 68 LOAD_CONST 0 (None)
- 71 RETURN_VALUE
- >>> dis.dis(test3)
- 2 0 SETUP_EXCEPT 14 (to 17)
- 3 3 LOAD_GLOBAL 0 (foo)
- 6 LOAD_CONST 1 ('c')
- 9 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 12 POP_TOP
- 13 POP_BLOCK
- 14 JUMP_FORWARD 72 (to 89)
- 4 >> 17 DUP_TOP
- 18 LOAD_GLOBAL 1 (KeyError)
- 21 COMPARE_OP 10 (exception match)
- 24 POP_JUMP_IF_FALSE 44
- 27 POP_TOP
- 28 POP_TOP
- 29 POP_TOP
- 5 30 LOAD_GLOBAL 2 (print)
- 33 LOAD_CONST 2 ('key')
- 36 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 39 POP_TOP
- 40 POP_EXCEPT
- 41 JUMP_FORWARD 45 (to 89)
- 6 >> 44 DUP_TOP
- 45 LOAD_GLOBAL 3 (IndexError)
- 48 COMPARE_OP 10 (exception match)
- 51 POP_JUMP_IF_FALSE 71
- 54 POP_TOP
- 55 POP_TOP
- 56 POP_TOP
- 7 57 LOAD_GLOBAL 2 (print)
- 60 LOAD_CONST 3 ('index')
- 63 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 66 POP_TOP
- 67 POP_EXCEPT
- 68 JUMP_FORWARD 18 (to 89)
- 8 >> 71 POP_TOP
- 72 POP_TOP
- 73 POP_TOP
- 9 74 LOAD_GLOBAL 2 (print)
- 77 LOAD_CONST 4 ('exc')
- 80 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
- 83 POP_TOP
- 84 POP_EXCEPT
- 85 JUMP_FORWARD 1 (to 89)
- 88 END_FINALLY
- >> 89 LOAD_CONST 0 (None)
- 92 RETURN_VALUE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement