This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Out of order commands excecution?
Type: Stage:
Components: Interpreter Core Versions: Python 2.3
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: mwh Nosy List: mwh, nadavhoresh, nnorwitz
Priority: normal Keywords:

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) (Python committer) 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) * (Python committer) 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) (Python committer) 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:01adminsetgithub: 39612
2003-11-27 08:54:21nadavhoreshcreate