Afuera de una función te sirve para definir una variable global que no quieres que sea visible fuera del archivo donde la estás definiendo. Muy útil si tienes cientos de archivos y no quieres buscar en todos para ver si alguno de ellos está haciendo mal uso de tal variable.
Dentro de una función o método sirve para definir una variable que es inicializada la primera vez que se llama a la función y perdura hasta la muerte del proceso. Asi que sólo es inicializada una vez y perdura entre llamadas a la función.