fork download
  1. class A:
  2. def __init__(self,n):
  3. self.n=n
  4. def __str__(self):
  5. return f'A[{self.n}]'
  6.  
  7.  
  8.  
  9. print("====== 1 ======")
  10.  
  11. F=[]
  12.  
  13. a1=A(13)
  14. def f():
  15. print(a1)
  16. F.append(f)
  17.  
  18. a2=A(17)
  19. def f():
  20. print(a2)
  21. F.append(f)
  22.  
  23. for f in F:
  24. f()
  25.  
  26. print("====== 2 ======")
  27.  
  28. F=[]
  29.  
  30. a=A(13)
  31. def f():
  32. print(a)
  33. F.append(f)
  34.  
  35. a=A(17)
  36. def f():
  37. print(a)
  38. F.append(f)
  39.  
  40. for f in F:
  41. f()
  42.  
  43. print("====== 2.1 ======")
  44.  
  45. F=[]
  46.  
  47. a=A(13)
  48. def f(*,a=a):
  49. print(a)
  50. F.append(f)
  51.  
  52. a=A(17)
  53. def f(*,a=a):
  54. print(a)
  55. F.append(f)
  56.  
  57. for f in F:
  58. f()
  59.  
  60. print("====== 3 ======")
  61.  
  62. F=[]
  63.  
  64. a=A(13)
  65. def f():
  66. print(a)
  67. F.append(f)
  68. del a
  69.  
  70. for f in F:
  71. f()
  72.  
Runtime error #stdin #stdout #stderr 0.18s 23532KB
stdin
Standard input is empty
stdout
====== 1 ======
A[13]
A[17]
====== 2 ======
A[17]
A[17]
====== 2.1 ======
A[13]
A[17]
====== 3 ======
stderr
Traceback (most recent call last):
  File "./prog.py", line 71, in <module>
  File "./prog.py", line 66, in f
NameError: name 'a' is not defined