Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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已经使用过C++语言和C++语言很陌生,不理解编译器向我扔的错误。_Python - Fatal编程技术网

名称';运行';在全局声明之前分配给 我对Python已经使用过C++语言和C++语言很陌生,不理解编译器向我扔的错误。

名称';运行';在全局声明之前分配给 我对Python已经使用过C++语言和C++语言很陌生,不理解编译器向我扔的错误。,python,Python,我试图创建一个全局bool,当线程函数更改为false时停止它 到目前为止,我的代码是: import random import math import threading import time listOfParticles = [] listOfThreads = [] run = False def printList(): print("New List :") for i in listOfParticles: print(

我试图创建一个全局bool,当线程函数更改为false时停止它

到目前为止,我的代码是:

import random
import math
import threading
import time

listOfParticles = []
listOfThreads = []
run = False


def printList():
    print("New List :")
    for i in listOfParticles:
        print(str(i[0]) + "," + str(i[1]))

def moveParticle(partID):
    while (True):
        if(run == False): return
        else:
            dir = random.randrange(0,360)
            dist = random.random()
            distx = math.cos(math.radians(dir))*dist
            disty = math.sin(math.radians(dir))*dist
            listOfParticles[i][0] += distx
            listOfParticles[i][1] += disty

def startMove():
    global run
    run = True
    for i in range(len(listOfParticles)):
        t = threading.Thread(target=moveParticle, args=(i,))
        listOfThreads.append(t)
    
    for i in listOfThreads:
        i.start()

if __name__ == "__main__":    
    global run
    for i in range(10):
        listOfParticles.append([random.random(), random.random()])
    startMove()
    while(run):
        printList()
        time.sleep(0.001)
    run = False
这个代码给了我一个错误

  File "d:\Programming\repos\Parallel\repos\Python\Lab 4\threadedParticles.py", line 38
    global run
    ^
SyntaxError: name 'run' is assigned to before global declaration

让我困惑的是全局定义上发生了错误。

这里不需要
global


if
name中的代码与
run=False
的范围相同,因为它不是一个函数,而只是一个常规的
if
条件。

否,此代码给出
name错误:未定义名称“False”
。请提供产生您所说的错误的正确代码。发布的代码有多个对
true
false
的引用,您尚未定义这些引用。Python定义了
True
False
,但不是它们的小写版本。你实际运行的是什么代码?@TomKarzes我编辑了它来修复这个问题,在使用了这里的一个答案后,我修复了我的错误,然后发现了正确/错误的问题并修复了它too@watsom27不,你修正了一些参考资料。有些仍然存在。我看到
run=false
run=true
。您看不到吗?
名称“random”未定义
,则
名称“startMove”未定义
。。。请花点时间来写一个正确的、可回答的问题,提供准确的、可运行的代码,而不是像你说的那样工作的版本。