用闭包把斐波拉契数列的前x项列出来,项数适中(自拟)

问题遇到的现象和发生背景 作业题(无答案版 要求用闭包把斐波拉契数列的前x项列出来,项数适中(自拟)
用代码块功能插入代码,请勿粘贴截图
def fib():
    x=1 
    y=1
    def fib2(q):
        nonlocal x
        nonlocal y
        for i in range(q):
             z=x+y
             x=y+z
             y=x+z
             w=[1,1]
             w.append(z)
             w.append(x)
             w.append(y)
             return w
    return fib2
ans=fib()
for i in ans(99):
    print(i,end=" ")

运行结果及报错内容 只显示前5项 即 1 1 2 3 5
我的解答思路和尝试过的方法 思路就是一个一个送进列表再输出
我想要达到的结果 输出前x项