Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在这个线程化python脚本中使用全局变量是否是一个良好的实践?_Python_Multithreading_Global Variables - Fatal编程技术网

我在这个线程化python脚本中使用全局变量是否是一个良好的实践?

我在这个线程化python脚本中使用全局变量是否是一个良好的实践?,python,multithreading,global-variables,Python,Multithreading,Global Variables,我正在处理一个使用线程的任务,我使用全局变量来处理我遇到的问题(比如在线程之间共享变量)。我知道通常不鼓励使用全局变量,所以我想问一下,这是否是全局变量的适当使用 这是密码。您将在function1()和function2()中找到声明的全局变量 您已经很好地使用了全局变量。但是,如果将两个全局变量移到函数之外,代码的可读性甚至会更高。这不会影响它们的范围。你也可以在这里阅读关于全局变量的常见问题 啊。我明白问题所在。Python不允许在不同的行上进行变量声明和初始化。在同一行声明并初始化所有变

我正在处理一个使用线程的任务,我使用全局变量来处理我遇到的问题(比如在线程之间共享变量)。我知道通常不鼓励使用全局变量,所以我想问一下,这是否是全局变量的适当使用

这是密码。您将在function1()和function2()中找到声明的全局变量


您已经很好地使用了全局变量。但是,如果将两个全局变量移到函数之外,代码的可读性甚至会更高。这不会影响它们的范围。你也可以在这里阅读关于全局变量的常见问题


啊。我明白问题所在。Python不允许在不同的行上进行变量声明和初始化。在同一行声明并初始化所有变量,如下所示

rand_num = random.randrange(4, 99999)
global rand_num
    rand_num = random.randrange(4, 99999)
而不是像这样

rand_num = random.randrange(4, 99999)
global rand_num
    rand_num = random.randrange(4, 99999)

从所有变量中删除全局关键字。然后将所有带有global关键字的变量放在所有函数定义之外

刚刚尝试过,当我的线程启动时,我得到
namererror:[var]未定义。我还尝试在主块中初始化它们,但仍然不起作用,所以我对它进行了一些尝试。我打算避免将我的输出缓冲区声明为全局变量,而不是“rand_num”。当函数3中使用“rand_num”时,函数2中的“rand_num”赋值不会更新该变量。如果我真的想避免全局变量,我可以用getter和setter声明一个Rand_num类。我想我可能会那样做。