On 10-jan-2006, at 13:02, Perdaen, D.M.L. wrote:
> I am a novice in python and I did some observations that resulted
> in two questions:
You can speak dutch here :-)
>
> Question 1: Why is it that the dictionary 'b' is global over the
> methods in scrips 1a and 1c and the result of 'print b' is { 'z' :
> 10 }? I would expect that dictionary 'b' would be created locally
> in 'subtest' and that it would stay empty in 'def test' just like
> in 'script 1b'. Can anybody explain the differences?
You really should read the tutorial. In script 1a test creates a new
dictionary and passes a reference to that dictionary to subtest.
Subtest then modifies that dictionary, it would also do that if you
defined subtest as like so: def subtest(c): c['z'] = 10. In script 1b
you create two dictionaries, one in test and one in subtest. In
script 1c subtest creates a second reference to the same dictionary
'a = b' does not copy the dictionary but binds the name 'a' to the
same object as 'b' is bound to.
Ronald
> # 1a
> def test():
> b = {}
> subtest(b)
> print b
> def subtest(b):
> b['z'] = 10
>
> p = test()
>
> result: b = { 'z' : 10 }
>
> # 1b
> def test():
> b = {}
> subtest(b)
> print b
> def subtest(b):
> b = {}
> b['z'] = 10
>
> p = test()
>
> result: b = {}
>
> # 1c
> def test():
> b = {}
> subtest(b)
> print b
> def subtest(b):
> a = b
> a['z'] = 10
>
> p = test()
>
> result: b = { 'z' : 10 }
>
> Question 2: In script 2a list 'b' stays the same as list 'a'. In
> scrips 2b int 'b' doesn't stay as int 'a'. Can anybody explain
> these differences?
>
> # 2a
> a = [ 1, 2, 3 ]
> print a
> b = a
> print b
> print a.pop()
> print a
> print b
>
> result:
> [ 1, 2, 3 ]
> [ 1, 2, 3 ]
> 3
> [ 1, 2 ]
> [ 1, 2 ]
>
> # 2b
> a = 1
> print a
> b = a
> print b
> a += 1
> print a
> print b
>
> result:
> 1
> 1
> 2
> 1
> _______________________________________________
> Python-nl mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/python-nl
_______________________________________________
Python-nl mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-nl