1# test compile builtin 2 3try: 4 compile 5except NameError: 6 print("SKIP") 7 raise SystemExit 8 9def test(): 10 global x 11 12 c = compile("print(x)", "file", "exec") 13 14 try: 15 exec(c) 16 except NameError: 17 print("NameError") 18 19 # global variable for compiled code to access 20 x = 1 21 22 exec(c) 23 24 exec(c, {"x":2}) 25 exec(c, {}, {"x":3}) 26 27 # single/eval mode 28 exec(compile("if 1: 10 + 1\n", "file", "single")) 29 exec(compile("print(10 + 2)", "file", "single")) 30 print(eval(compile("10 + 3", "file", "eval"))) 31 32 # bad mode 33 try: 34 compile('1', 'file', '') 35 except ValueError: 36 print("ValueError") 37 38 # exception within compiled code 39 try: 40 exec(compile('noexist', 'file', 'exec')) 41 except NameError: 42 print("NameError") 43 print(x) # check 'x' still exists as a global 44 45test() 46