Python 我可以将finally语句与def语句一起使用吗?
我正在创建一个程序,我想知道,有没有办法将Python 我可以将finally语句与def语句一起使用吗?,python,Python,我正在创建一个程序,我想知道,有没有办法将finally与def语句一起使用?例如: # NOT WORKING def test(a,b,c): return a+b+c finally: del a,b,c x = test(4,5,6) 因此,我可以在函数中return之后删除函数中的变量,或者调用函数后是否需要删除变量 编辑:这是一个关于变量的愚蠢的例子,但我想实现的不仅仅是删除变量(因为我认为它在删除之前一直保存在RAM中),还有删除文件和类似内容 帮助我实现这一目
finally
与def
语句一起使用?例如:
# NOT WORKING
def test(a,b,c):
return a+b+c
finally:
del a,b,c
x = test(4,5,6)
因此,我可以在函数中return
之后删除函数中的变量,或者调用函数后是否需要删除变量
编辑:这是一个关于变量的愚蠢的例子,但我想实现的不仅仅是删除变量(因为我认为它在删除之前一直保存在RAM中),还有删除文件和类似内容
帮助我实现这一目标的代码是:
def test(a, b, c):
try:
return a + b + c
finally:
pass # do whatever you want
在python中不需要删除变量。我不确定你是来自某种奇怪的语言还是问了一些不同的问题。但是,有一种方法可以通过在函数中放置
try
来实现您想要的:
def test(a, b, c):
try:
return a + b + c
finally:
pass # do whatever you want
但当正则变量超出范围时,它们可能会被遗忘。使用类似文件的资源,您可以:
当你谈论删除时,你应该问自己从何处删除?任何python对象都存在于名称空间(全局、本地、内置等)中,在这种情况下,函数中的变量位于本地名称空间中,如果不想在函数中使用它们,则不需要删除它们,只需删除函数即可 但是,如果您在全局命名空间中定义了变量,那么删除函数中的变量不会在全局命名空间中删除它们,您可以在调用函数后删除它们 例如:
>>> 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
定义a(x,y):
... 返回x,y
...
>>>a(3,4)
(3, 4)
>>>德拉
>>>a
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“a”
如果在函数外定义了变量:
>>> 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
>x,y=3,9
>>>定义a(x,y):
... 德尔x,y
... 打印x
...
>>>a(x,y)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第3行,在
UnboundLocalError:赋值前引用了局部变量“x”
>>>x
3.
1。不,没有;二,。“删除函数中的变量”是什么意思?你到底想要实现什么?!您不能将finally
与def
一起使用。此外,您不需要删除变量(我想您这样做是为了释放内存?)Python有垃圾收集器。@sobolevn有del
的用法,但这不是其中之一。在本例中,变量自动超出范围。如果没有发生这种情况,您可能希望使用del
从范围中删除绑定(这并不一定意味着删除对象)。例如,如果您不再希望x
成为全局变量,您将使用del
(可能名为x
的对象会被销毁)。
>>> 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