变量相同的值共享2个python脚本文件

时间:2018-04-17 12:46:27

标签: python function variables import

大家好,               我有一个python脚本文件,创建一个移动对象,因此它的坐标(创建的对象,可以是球体,框等)正在改变,我想在另一个文件中使用这些更改变量,以便两个文件获得相同的值在特定时间变量。请告诉我,我该怎么做。所有帮助表示赞赏。谢谢。给定以下是为两个文件生成变量的代码。

zp = 0
def givalue();
        global zp
        if zp > 0.4:
            zp = 0.1
            return zp
        else:
            zp = zp + 0.1
            return zp
while 1:
    z = givalue()
    print 'value of zp is ', z

1 个答案:

答案 0 :(得分:0)

通过文件中的全局变量共享值通常不被视为正确的设计。创建存储共享数据的基类和需要访问此共享数据的任意数量的派生类,功能更加强大和灵活。这是该模式的骨架:

class Shared(object):
  shared = [0, 0] # put all shared values in a list or a dictionary

class C1(Shared):
  def __init__(self):
    print('C1: shared =', self.shared)
  def update(self, index):
    self.shared[index] += 1
    print('C1: shared =', self.shared)

class C2(Shared):
  def __init__(self):
    print('C2: shared =', self.shared)
  def update(self, index):
    self.shared[index] += 1
    print('C2: shared =', self.shared)

c1 = C1()
c1.update(0)
c2 = C2()
c2.update(0)
c2.update(1)
c1.update(1)

结果:

C1: shared = [0, 0]
C1: shared = [1, 0]
C2: shared = [1, 0]
C2: shared = [2, 0]
C2: shared = [2, 1]
C1: shared = [2, 2]

当然,所有三个类可能在三个不同的源文件中,只有import才能使用它们

如果您真的坚持不使用OO范例,则以下代码可能符合您的意愿:

# --------------
# shared.py
# --------------
shared = [0,0] # put all shared values in a list or a dictionary

# --------------
# C1.py
# --------------
from shared import *
print('C1: shared =', shared)
shared[0] += 1
print('C1: shared =', shared)

# --------------
# C2.py
# --------------
from shared import *
print('C2: shared =', shared)
shared[0] += 1
print('C2: shared =', shared)

魔术的作用源于导入的文件仅在首次导入时执行,因此第二次导入shared时,shared.py变量不会被重置。 / p>