是否需要在方法中将全局线程锁声明为全局锁才能获取它?

Does a global threading Lock need to be declared as global within a method in order to aquire it?

在方法内部获取全局实例化锁时,是否需要使用global关键字声明全局锁?

如果不是,为什么不呢?我们不是通过获取锁来修改吗?

我正在按照以下方式对案例进行成像:

import threading
name_lock = threading.Lock()
name: str = ""
...

def modify_name(new_name: str):
    global name
    with name_lock:
        name = new_name

...

在 functions/classes 之外创建的所有变量自动成为全局变量。

我们仅在函数内部使用 global 来通知函数它必须使用 external/global 变量,当您尝试使用 = 分配新值时 - 如 name = new_name - 如果你不使用 global 那么它会创建局部变量 name。但是当你想改变对象内部的一些 value/variable 时它不需要这个 - 即。 my_list.append(value)。并且 with name_lock 不会为变量 name_lock 分配新值,但它只会在对象 name_lock 内部执行一些方法,这些方法会更改内部值。