D
Daishi Harada
Hi,
I'd like to get the 'get2' function below to
perform like the 'get1' function (I've included
timeit.py results).
I'm not sure how to write 'mkget' to do achieve
this, however, except to use 'exec' - is that what
would be necessary?
Thanks in advance,
d
---
class A:
a = 1
b = 2
a = A()
labels = ('a', 'b')
def get1(x):
return (x.a, x.b)
def mkget(attrs):
def getter(x):
return tuple(getattr(x, label) for label in attrs)
return getter
get2 = mkget(labels)
# % timeit.py -s "import test" "test.get1(test.a)"
# 1000000 loops, best of 3: 0.966 usec per loop
# % timeit.py -s "import test" "test.get2(test.a)"
# 100000 loops, best of 3: 4.46 usec per loop
---
I'd like to get the 'get2' function below to
perform like the 'get1' function (I've included
timeit.py results).
I'm not sure how to write 'mkget' to do achieve
this, however, except to use 'exec' - is that what
would be necessary?
Thanks in advance,
d
---
class A:
a = 1
b = 2
a = A()
labels = ('a', 'b')
def get1(x):
return (x.a, x.b)
def mkget(attrs):
def getter(x):
return tuple(getattr(x, label) for label in attrs)
return getter
get2 = mkget(labels)
# % timeit.py -s "import test" "test.get1(test.a)"
# 1000000 loops, best of 3: 0.966 usec per loop
# % timeit.py -s "import test" "test.get2(test.a)"
# 100000 loops, best of 3: 4.46 usec per loop
---