class A:
    def __init__(self,n):
        self.n=n
    def __str__(self):
        return f'A[{self.n}]'



print("====== 1 ======")

F=[]

a1=A(13)
def f():
    print(a1)
F.append(f)

a2=A(17)
def f():
    print(a2)
F.append(f)

for f in F:
    f()

print("====== 2 ======")

F=[]

a=A(13)
def f():
    print(a)
F.append(f)

a=A(17)
def f():
    print(a)
F.append(f)

for f in F:
    f()
    
print("====== 2.1 ======")

F=[]

a=A(13)
def f(*,a=a):
    print(a)
F.append(f)

a=A(17)
def f(*,a=a):
    print(a)
F.append(f)

for f in F:
    f()

print("====== 3 ======")

F=[]

a=A(13)
def f():
    print(a)
F.append(f)
del a

for f in F:
    f()
