>>>>> "TW" == Thomas Wouters <thomas@xs4all.net> writes: TW> On Wed, Jan 24, 2001 at 12:33:43PM -0800, Ka-Ping Yee wrote: >> Please try: >> >>> def f(a, (b, c), *d): >> ... x = 1 ... print a, b, c, d, x ... >> >>> f(1, (2, 3), 4) >> 1 2 3 Traceback (most recent call last): File "<stdin>", line 1, >> in ? File "<stdin>", line 3, in f UnboundLocalError: local >> variable 'd' referenced before assignment >> >>> >> In Python 1.5.2, this prints "1 2 3 (4,)" as expected. >> I only have 1.5.2 and 2.1a1 to test. I hope this problem isn't >> present in 2.0... TW> It isn't present in 2.0. This is probably related to Jeremy's TW> changes in the call mechanism or the compiler track, though TW> Jeremy himself is the best person to claim that for sure :) The bug is in the compiler. It creates varnames while it is parsing the argument list. While I got the handling of the anonymous tuples right, I forgot to insert *varargs or **kwargs in varnames *before* the names defined in the tuple. I will fix it real soon now. >> Note that test_inspect was the only test to fail! It might be >> the only test that checks anonymous and *varargs at the same >> time. (Yet another reason to put inspect in the core...) TW> Well, this is not an inspect-specific test, so it shouldn't *be* TW> in test_inspect, it should be in test_extcall :) It should probably be in test_grammar. The ext call mechanism is only invoked when the caller uses a form like 'f(*arg)'. Perhaps the name "ext call" isn't very clear. Jeremy
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4