When are function local python variables created?
<p>When are function-local variables are created? For example, in the following code is dictionary d1 created each time the function f1 is called or only once when it is compiled?</p>

<pre><code>def f1():
    d1 = {1: 2, 3: 4}
    return id(d1)

d2 = {1: 2, 3: 4}
def f2():
    return id(d2)
</code></pre>

<p>Is it faster in general to define a dictionary within function scope or to define it globally (assuming the dictionary is used only in that function). I know it is slower to look up global symbols than local ones, but what if the dictionary is large?</p>

<p>Much python code I've seen seems to define these dictionaries globally, which would seem not to be optimal. But also in the case where you have a class with multiple 'encoding' methods, each with a unique (large-ish) lookup dictionary, it's awkward to have the code and data spread throughout the file.</p>
