まず第一に、私はグローバル変数を避けることについての他のコメントに完全に同意します。それらを回避するために再設計することから始める必要があります。しかし、あなたの質問に答えるために:
サブルーチンの定義の順序は重要ではありません。それらを呼び出す順序は重要です。
>>> def using_func():
... print a
...
>>> using_func()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in using_func
NameError: global name 'a' is not defined
>>> def defining_func():
... global a
... a = 1
...
>>> using_func()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in using_func
NameError: global name 'a' is not defined
>>> defining_func()
>>> using_func()
1