修改全局变量一定需要加global吗?
num = 100
lis = [11,22]
def demo():
global num
num += 100
def demo1():
lis.append(33) # 未修改指向 只是修改了指向空间的数据 不用加global
def demo2():
global lis
lis = lis + [44] # 修改了指向 要加上global
print(num) # 100
demo()
print(num) # 200
# demo1()
demo2()
print(lis) # [11, 22, 44]
多线程共享全局变量
def demo1():
global num
num += 1
print("demo1---%d" % num)
def demo2():
print("demo2---%d" % num)
def main():
t1 = threading.Thread(target=demo1)
t2 = threading.Thread(target=demo2)
t1.start()
time.sleep(1)
t2.start()
time.sleep(1)
print("main----%d" % num)
if __name__ == '__main__':
main()
执行结果:101
多线程参数
import threading
import time
num = [11,22]
def demo1(num):
num.append(33)
print("demo1---%s" % str(num))
def demo2(num):
print("demo2---%s" % str(num))
def main():
t1 = threading.Thread(target=demo1,args=(num,))
t2 = threading.Thread(target=demo2,args=(num,))
t1.start()
time.sleep(1)
t2.start()
time.sleep(1)
print("main----%s" % str(num))
if __name__ == '__main__':
main()