我正在创建一个程序,我想知道,有finally
语句可以使用def
吗?例如:
# NOT WORKING
def test(a,b,c):
return a+b+c
finally:
del a,b,c
x = test(4,5,6)
所以我可以在函数中return
之后删除函数中的变量,还是在调用函数后需要删除变量?
帮助我的代码是:
def test(a, b, c):
try:
return a + b + c
finally:
pass # do whatever you want
答案 0 :(得分:2)
您不需要删除python中的变量。我不确定你是来自某种奇怪的语言,还是在问一些不同的东西。但是有一种方法可以通过在函数中放置try
来实现你想要的东西:
def test(a, b, c):
try:
return a + b + c
finally:
pass # do whatever you want
但是当常规变量超出范围时,它们可能会被遗忘。使用文件等资源,您需要use with
instead:
with open('blah.txt', 'rb') as f:
pass
答案 1 :(得分:1)
当你在谈论删除时,你应该问自己从哪里删除?任何python对象都存在于命名空间中(全局,本地,内置,......),在这种情况下,函数内部的变量位于本地命名空间中,如果你不想在函数内使用它们#39; t需要删除它们,你只需删除你的功能。
但是如果你在全局命名空间中定义了变量,删除函数内部的变量并没有在全局命名空间中删除它们,你可以在调用函数后删除它们。
示例:
>>> def a(x,y):
... return x,y
...
>>> a(3,4)
(3, 4)
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
如果你在函数之外定义了变量:
>>> x,y=3,9
>>> def a(x,y):
... del x,y
... print x
...
>>> a(x,y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in a
UnboundLocalError: local variable 'x' referenced before assignment
>>> x
3