Q:

global変数の使い方について

あるコードを実行したくて、変数の取得方法がわからなかったのでので簡易化したコードで質問します。 
参考書を見て、「global変数を使うことで、関数内からグローバル変数にアクセスできる」」ということは理解しているのですが、
def f(x):
    global y
    y=x+2
    return x+2

x=2
print(y)
>>4
#誤ったコードです。実行されません。（イメージ的にこうなってほしい、みたいな・・？） 

のように、逆に関数内部の変数をグローバル変数として関数外部から取り出すことは不可能ですか？ 
P.S.)本当にしたかったこと
class Queue:#練習用にQueueの一部機能を手書きしています。 
    def __init__(self):
        self.items=[]

    def is_empty(self):
        return self.items==[]

    def enqueue(self,item):
        self.items.insert(0,item)#enqueuメソッドの引数itemをキューの一番最初（インデックス値＝０）の要素として追加します。 
        #insertメソッドは、".insert(index値,要素)"によってリストにオブジェクトを追加します。 

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)

import time
import random

def simulate_line(till_show,max_time):
    pq=Queue()
    tix_sold=[]

    for i in range(100):
        pq.enqueue("person" + str(i))

    t_end=time.time()+till_show
    now=time.time()
    while now<t_end and not pq.is_empty():
        now=time.time()
        r=random.randint(0,max_time)
        time.sleep(r)
        person=pq.dequeue()
        print(person)
        tix_sold.append(person)

    return tix_sold

sold=simulate_line(5,1)
print(tix_sold)

のコードにおいて、tix_soldのリストの個数が１０個を超えるまで関数を繰り返し実行するようにしたかったです。 

A:

逆に関数内部の変数をグローバル変数として関数外部から取り出すことは不可能ですか？ 

その関数を実行すれば、グローバル変数にアクセスすることは可能です。 
global yは、f(x)を実行しないと定義されないため、
以下のようにf(x)を実行する必要があります。 
x=2
f(2)
print(y)  #=> 4

そのため、simulate_lineの場合、simulate_line自体を実行しているので、
以下のようにglobal tix_soldとしておけば、エラーなく実行できるはずです。 
def simulate_line(till_show,max_time):
    pq=Queue()
    global tix_sold
    tix_sold=[]
    # 略

ただし、バグを減らすためには、極力グローバル変数は避けたほうが良いため、今回の場合は、simulate_lineの戻り値をそのまま利用したほうが良いと思います。