Fun with python

Fun python snippets

Here is a short list of python WTF’s i often come across in my own code, debugging
those is quite hard..

Tuples are immutable ?

a = ([],[])

try:
# Modifying a tuple ?
a[0] += [1]
except:
pass

print a

Weird list references:

a = [[None]*4]*3
a[0][0] = 1

print a

Import madness:

* in mod1.py:
FOO=1

* in mod2.py:
import mod1
def set_foo(i):
mod1.FOO = i

* in mod3.py:
from mod1 import *
import mod2
mod2.set_foo(2)
print FOO

Run "python mod3.py"

Weird variable scoping:

* in mod1.py:
a = 3
def foo():
return a

if __name__ == "__main__":
for a in range(3):
print foo()

* in mod2.py
from mod1 import *
a = 6
print foo()

Compare "python mod1.py" and "python mod2.py"

Of course these snippets are a bit convoluted, but I often find these patterns appearing randomly..

How much of them have you got right without looking at the answer before?


Posted

in

,

by

Tags:

Comments

One response to “Fun with python”

  1. Thx1138 Avatar

    In the first example, you don’t modify the tuple, really.
    Instead you modify the list which is referenced by the tuple.
    That’s all.