In a2() you do l1 += l2, ie, l1 = l1 + l2
But if you don't have l1 defined yet, you can't add to l2
It's like:
def a2():
l1 = foo + l2
UnboundLocalError: local variable 'foo' referenced before assignment
It's because l1 (and foo at above example) is a local variable.
a1's l1 is different from a2's l1.
Sorry to be dense, but how, in what way, is a1's l1 different from a2's l1"? Both are [1,2,3]*100 .
Dick
On Sat, Jun 28, 2008 at 01:39, Dick Moores <[EMAIL PROTECTED]> wrote:
- I'm puzzled by the below error msg. If I change the line in a2() from
- l1 = [1,2,3]*100
- to
- l1 = [1,2,3]
- There is no problem.
- Why? And why isn't that line a problem for a1()?
- =========================================
- def a1():
- return l1.extend(l2)
- if __name__=='__main__':
- l1 = [1,2,3]*100
- l2 = [4,5,6]
- from timeit import Timer
- t = Timer("a1()", "from __main__ import a1")
- t1 = t.timeit(number=10)
- def a2():
- l1 += l2
- if __name__=='__main__':
- l1 = [1,2,3]*100
- l2 = [4,5,6]
- from timeit import Timer
- t = Timer("a2()", "from __main__ import a2")
- t2 = t.timeit(number=10)
- print "t1:", t1
- print "t2:", t2
- print "t2/t1:", t2/t1
- Error msg:
- E:\PythonWork>timing_2_stupidsV2.py
- Traceback (most recent call last):
- File "E:\PythonWork\timing_2_stupidsV2.py", line 21, in <module>
- t2 = t.timeit(number=10)
- File "E:\Python25\lib\timeit.py", line 161, in timeit
- timing = self.inner(it, self.timer)
- File "<timeit-src>", line 6, in inner
- File "E:\PythonWork\timing_2_stupidsV2.py", line 15, in a2
- l1 += l2
- UnboundLocalError: local variable 'l1' referenced before assignment
- ===================================================
- Thanks,
- Dick Moores
- _______________________________________________
- Tutor maillist - Tutor@python.org
- http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor