On 04/23/2014 06:46 PM, Denis Heidtmann wrote:
In a coursera python course video the following code was presented:
a = [4,5,6]
def mutate_part(x):
a[1] = x
mutate_part(200)
The presenter said something like "a is a global variable, so a becomes
[4,200,6] after running mutate_part(200)."
Indeed it does, but why does this work without specifying a as global
within mutate()?
My thinking was that an "undefined" error should have been raised.
Help me understand. Thanks,
-Denis
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Hi,
Try out this modified version of the example you provide:
def mutate(x):
global y
y = x + 1
a[1] = x
a = [1, 2, 3]
y = 0
mutate(200)
print a
print y
Both, 'a' and 'y' will be modified, but if you comment out global, 'y'
will not change.
In a few words, assigning a[k] = value is technically a method call, and
it behaves
differently (spans across scopes). A more detailed answer can be found here:
http://stackoverflow.com/questions/4630543/defining-lists-as-global-variable-in-python
Of course, I would limit this practice to *very* small programs, since
anything beyond
50 lines should have more structure and you can use either modular
programming or
OOP, which is the preferred practice today to structure complex
applications.
Gerardo
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor