gpt4 book ai didi

python - python是否优化了未使用的变量?

转载 作者:太空狗 更新时间:2023-10-30 01:42:33 25 4
gpt4 key购买 nike

对于我创建的以下类,我的 linter 不断地用未使用的变量警告来干扰我:

class LockGuard(object):
def __init__(self, mutex):
self.mutex = mutex
self.mutex.acquire()

def __del__(self):
self.mutex.release()

在代码中,我每次使用它都会收到警告

def do_something(self)
locker = LockGuard(self.mutex)
// do something on the data
return outcome

我知道 c++ 编译器会优化未使用的变量,我想知道 python 是否也这样做过?因此解除对数据的锁定。

最佳答案

linter 应该就此打扰您。因为管理上下文的正确方法是使用 context manager .

with LockGuard():
# do stuff

将如何获取和释放锁的实现细节分别放在LockGuard.__enter__LockGuard.__exit__中。

你不应该依赖于 __init____del__,因为 __del__ 是不可靠的。

I know that C++ compilers optimize unused variables out, I was wondering if Python ever does the same? Therefore remove the lock on data.

Python 不会这样做。有一些窥视孔优化,但没有什么比从范围中完全删除对象更激烈的了。一旦实例的引用计数降为零(即一旦 locker name 超出范围),它就应该被删除,但在实现中无法保证何时这种情况发生了,甚至不能保证自定义的 __del__ 会被调用。

关于python - python是否优化了未使用的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com