2015-03-14 14:06:20 +00:00
|
|
|
# cmdline: -v -v
|
|
|
|
# test printing of all bytecodes
|
|
|
|
|
|
|
|
def f():
|
|
|
|
# constants
|
2015-05-05 23:58:52 +01:00
|
|
|
a = None + False + True
|
2015-03-14 14:06:20 +00:00
|
|
|
a = 0
|
|
|
|
a = 1000
|
|
|
|
a = -1000
|
|
|
|
|
|
|
|
# constructing data
|
|
|
|
a = 1
|
|
|
|
b = (1, 2)
|
|
|
|
c = [1, 2]
|
|
|
|
d = {1, 2}
|
|
|
|
e = {}
|
|
|
|
f = {1:2}
|
|
|
|
g = 'a'
|
|
|
|
h = b'a'
|
|
|
|
|
|
|
|
# unary/binary ops
|
|
|
|
i = 1
|
|
|
|
j = 2
|
|
|
|
k = a + b
|
|
|
|
l = -a
|
|
|
|
m = not a
|
|
|
|
m = a == b == c
|
|
|
|
m = not (a == b and b == c)
|
|
|
|
|
|
|
|
# attributes
|
|
|
|
n = b.c
|
|
|
|
b.c = n
|
|
|
|
|
|
|
|
# subscript
|
|
|
|
p = b[0]
|
|
|
|
b[0] = p
|
2016-10-17 01:23:37 +01:00
|
|
|
b[0] += p
|
2015-03-14 14:06:20 +00:00
|
|
|
|
|
|
|
# slice
|
|
|
|
a = b[::]
|
|
|
|
|
|
|
|
# sequenc unpacking
|
|
|
|
a, b = c
|
2016-10-17 01:23:37 +01:00
|
|
|
a, *a = a
|
2015-03-14 14:06:20 +00:00
|
|
|
|
|
|
|
# tuple swapping
|
|
|
|
a, b = b, a
|
|
|
|
a, b, c = c, b, a
|
|
|
|
|
|
|
|
# del fast
|
|
|
|
del a
|
|
|
|
|
|
|
|
# globals
|
|
|
|
global gl
|
|
|
|
gl = a
|
|
|
|
del gl
|
|
|
|
|
|
|
|
# comprehensions
|
|
|
|
a = (b for c in d if e)
|
|
|
|
a = [b for c in d if e]
|
|
|
|
a = {b:b for c in d if e}
|
|
|
|
|
|
|
|
# function calls
|
|
|
|
a()
|
|
|
|
a(1)
|
|
|
|
a(b=1)
|
|
|
|
a(*b)
|
|
|
|
|
|
|
|
# method calls
|
|
|
|
a.b()
|
|
|
|
a.b(1)
|
|
|
|
a.b(c=1)
|
|
|
|
a.b(*c)
|
|
|
|
|
|
|
|
# jumps
|
|
|
|
if a:
|
|
|
|
x
|
|
|
|
else:
|
|
|
|
y
|
|
|
|
while a:
|
|
|
|
b
|
|
|
|
while not a:
|
|
|
|
b
|
2016-10-17 01:23:37 +01:00
|
|
|
a = a or a
|
2015-03-14 14:06:20 +00:00
|
|
|
|
|
|
|
# for loop
|
|
|
|
for a in b:
|
|
|
|
c
|
|
|
|
|
|
|
|
# exceptions
|
|
|
|
try:
|
|
|
|
while a:
|
|
|
|
break
|
|
|
|
except:
|
|
|
|
b
|
|
|
|
finally:
|
|
|
|
c
|
2016-10-17 01:23:37 +01:00
|
|
|
while a:
|
|
|
|
try:
|
|
|
|
break
|
|
|
|
except:
|
|
|
|
pass
|
2015-03-14 14:06:20 +00:00
|
|
|
|
|
|
|
# with
|
|
|
|
with a:
|
|
|
|
b
|
|
|
|
|
|
|
|
# closed over variables
|
|
|
|
x = 1
|
|
|
|
def closure():
|
2018-10-26 06:36:29 +01:00
|
|
|
nonlocal x; a = x + 1
|
2015-03-14 14:06:20 +00:00
|
|
|
x = 1
|
|
|
|
del x
|
|
|
|
|
|
|
|
# import
|
|
|
|
import a
|
|
|
|
from a import b
|
2019-09-20 08:16:34 +01:00
|
|
|
#from sys import * # tested at module scope
|
2015-03-14 14:06:20 +00:00
|
|
|
|
|
|
|
# raise
|
|
|
|
raise
|
|
|
|
raise 1
|
|
|
|
|
|
|
|
# return
|
|
|
|
return
|
|
|
|
return 1
|
|
|
|
|
2016-10-17 01:23:37 +01:00
|
|
|
# function with lots of locals
|
|
|
|
def f():
|
|
|
|
l1 = l2 = l3 = l4 = l5 = l6 = l7 = l8 = l9 = l10 = 1
|
|
|
|
m1 = m2 = m3 = m4 = m5 = m6 = m7 = m8 = m9 = m10 = 2
|
|
|
|
l10 + m10
|
|
|
|
|
2015-03-14 14:06:20 +00:00
|
|
|
# functions with default args
|
|
|
|
def f(a=1):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def f(b=2):
|
|
|
|
return b + a
|
|
|
|
|
|
|
|
# function which yields
|
|
|
|
def f():
|
|
|
|
yield
|
|
|
|
yield 1
|
|
|
|
yield from 1
|
|
|
|
|
|
|
|
# class
|
|
|
|
class Class:
|
|
|
|
pass
|
2016-10-17 01:23:37 +01:00
|
|
|
|
|
|
|
# delete name
|
|
|
|
del Class
|
2017-04-19 00:49:48 +01:00
|
|
|
|
|
|
|
# load super method
|
|
|
|
def f(self):
|
|
|
|
super().f()
|
2019-09-20 08:16:34 +01:00
|
|
|
|
|
|
|
# import * (needs to be in module scope)
|
|
|
|
from sys import *
|