Created on 2003-11-27 08:54 by nadavhoresh, last changed 2022-04-11 14:56 by admin. This issue is now closed.
| Messages (6) |
|
msg19155 - (view) |
Author: Nadav Horesh (nadavhoresh) |
Date: 2003-11-27 08:54 |
Consider the following:
>>> import string
>>> def test1():
join = string.join
>>> def test2():
join = string.join
string = string.split
>>> test1()
>>> test2()
Traceback (most recent call last):
File "<pyshell#9>", line 1, in -toplevel-
test2()
File "<pyshell#7>", line 2, in test2
join = string.join
UnboundLocalError: local variable 'string' referenced
before assignment
>>>
How the second statement in test2 generates an error in
first one?
Nadav.
|
|
msg19156 - (view) |
Author: Michael Hudson (mwh)  |
Date: 2003-11-27 12:09 |
Logged In: YES
user_id=6656
Well, that's just how it works. This must be documented
somewhere... see if
http://www.python.org/doc/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python
helps (and maybe the question before).
|
|
msg19157 - (view) |
Author: Nadav Horesh (nadavhoresh) |
Date: 2003-11-30 19:26 |
Logged In: YES
user_id=75473
I've looked at the FAQ and it is not seems to sesolve the
issue: In test2 "string" becomes a local variable in the
second line, while in the first line (join = string.join)
"string" should point to the (global) string module.
Nadav.
|
|
msg19158 - (view) |
Author: Neal Norwitz (nnorwitz) *  |
Date: 2003-12-01 05:25 |
Logged In: YES
user_id=33168
If a variable is local in a function, it is local throughout
the whole function. It doesn't become local at the first
assignment, but from the beginning of the function. Does
that help?
|
|
msg19159 - (view) |
Author: Michael Hudson (mwh)  |
Date: 2003-12-01 12:34 |
Logged In: YES
user_id=6656
Well, you reopened the bug, so you're obviously not happy.
What do you want to see changed? The behaviour? No chance.
Better documentation? Feel free to supply a patch (or just
suggest wording and a location, others can do the latex).
|
|
msg19160 - (view) |
Author: Nadav Horesh (nadavhoresh) |
Date: 2003-12-01 14:31 |
Logged In: YES
user_id=75473
I understand that this is just a documentation issue. I
guess that probably the interpreter builds the variables
table before executing the first line of code. But, I afraid
that I am not familiar with the internal of python to raise
such statements.
Thank you very much for your help
Nadav.
|
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2022-04-11 14:56:01 | admin | set | github: 39612 |
| 2003-11-27 08:54:21 | nadavhoresh | create | |