You don't need a global variable for this and truly speaking you won't need them anytime in the future as it is a bad practice to use global variables. Refer to this link for details, why are global variables evil?
Now coming to your problem, you probably need g module of flask which creates a context which persist over multiple requests from the same user. You can do something like this:
from flask import g
...
def get_messages():
    messages = getattr(g, '_messages', None)
    if messages is None:
        g._messages = []  # to store messages you may use a dictionary
    return g._messages
def add_message(message):
    messages = get_messages()
    messages.append(message)
    setattr(g, '_messages', messages)
    return messages
And remember for each user a different thread of the app is created so the neither the variables are shared nor their values. So for each user there will be a different g but it will persist over multiple requests from the same user. Hope it helps!
Edit: g object is a proxy to application context and doesn't persists across multiple requests. It persists for a single requests across the application.