在Python中如何同时从另一个函数访问变量?

在Python中如何同时从另一个函数访问变量?,python,Python,我有两个功能。 如何从fun2内部的fun1访问变量,反之亦然 def fun1(): while True: x = m + n print(g) def fun2(): while True: g = a + b print(x) 可以将变量用作函数属性 def fun1(): while True: fun1.x = m + n print(fun2.g) de

我有两个功能。 如何从fun2内部的fun1访问变量,反之亦然

def fun1(): 
    while True:
        x = m + n
        print(g)

def fun2():
    while True:
        g = a + b
        print(x)

可以将变量用作函数属性

def fun1(): 
    while True:
        fun1.x = m + n
        print(fun2.g)

def fun2():
    while True:
        fun2.g = a + b
        print(fun1.x)

使变量成为全局变量

    def fun1(): 
        while True:
            global x
            x = m + n
            print(g)

    def fun2():
            while True:
                global g
                g = a + b
                print(x)

可以将变量用作函数属性

def fun1(): 
    while True:
        fun1.x = m + n
        print(fun2.g)

def fun2():
    while True:
        fun2.g = a + b
        print(fun1.x)

使变量成为全局变量

    def fun1(): 
        while True:
            global x
            x = m + n
            print(g)

    def fun2():
            while True:
                global g
                g = a + b
                print(x)

如果
x
g
是全局变量(定义在函数范围之外),则可以在任一函数内访问它们


话虽如此,我同意奥斯汀上面的评论,这听起来像是你在问如何解决问题,而不是如何解决问题……

如果
x
g
是全局变量(定义在函数范围之外),那么你可以在任何函数中访问它们


话虽如此,我同意奥斯汀上面的评论,听起来你是在问如何解决问题,而不是如何解决问题……

如果需要,你可以将它们作为对象/类的一部分

class Fun:
    def __init__(self):
        self.x = 0
        self.g = 0
    def fun1(self):
        self.x = m + n
        print(self.g)
    def fun2(self):
        self.g = a + b
        print(self.x)
但是,我真的建议不要使用它,除非它是您特别想要的,您可以尝试调用函数属性:

def fun1(): 
    while True:
        fun1.x = m + n
        print(fun2.g)

def fun2():
    while True:
        fun2.g = a + b
        print(fun1.x)
或者您可以将变量设置为全局变量,但我不推荐这样做,因为它会导致各种问题

def fun1(): 
   while True:
       global x
       x = m + n
       print(g)

def fun2():
    while True:
       global g
       g = a + b
       print(x)

如果需要,您可以使它们成为对象/类的一部分

class Fun:
    def __init__(self):
        self.x = 0
        self.g = 0
    def fun1(self):
        self.x = m + n
        print(self.g)
    def fun2(self):
        self.g = a + b
        print(self.x)
但是,我真的建议不要使用它,除非它是您特别想要的,您可以尝试调用函数属性:

def fun1(): 
    while True:
        fun1.x = m + n
        print(fun2.g)

def fun2():
    while True:
        fun2.g = a + b
        print(fun1.x)
或者您可以将变量设置为全局变量,但我不推荐这样做,因为它会导致各种问题

def fun1(): 
   while True:
       global x
       x = m + n
       print(g)

def fun2():
    while True:
       global g
       g = a + b
       print(x)

欢迎来到SO:问题与
机器学习
数据科学
无关-请不要发送不相关的标签(删除)。您试图解决的真正问题是什么?这是肯定的。欢迎来到SO:问题与
机器学习
数据科学
无关-请不要垃圾发送不相关的标签(已删除)。您试图解决的真正问题是什么?这是肯定的。只有当您从一个函数访问另一个函数的变量时,这两种方法才起作用。在这里,它是同步的。因此,两者都将失败。因为当您执行fun1时,它将显示“g”未定义。只有当您从一个函数访问另一个函数时,这两种方法才起作用。在这里,它是同步的。因此,两者都将失败。因为当您执行fun1时,它将显示“g”未定义。这个问题的主要目的是如何同时从另一个变量访问变量。因此,上述两种解决方案都将失败,因为当您执行fun1时,它将显示“g”未定义。“同时”是什么意思?如果这些函数是同一进程的一部分,那么它们永远不会同时运行。还是他们?在函数外部初始化变量x和g。每次函数运行时,它们都会得到更新。再一次。。。重申上面Austin的要求:如果你发布原始问题(促使你尝试这个想法),人们可能会找到更好的解决方案。这个问题的主要动机是如何同时访问彼此的变量。因此,上述两种解决方案都将失败,因为当您执行fun1时,它将显示“g”未定义。“同时”是什么意思?如果这些函数是同一进程的一部分,那么它们永远不会同时运行。还是他们?在函数外部初始化变量x和g。每次函数运行时,它们都会得到更新。再一次。。。重申上面Austin的请求:如果您发布原始问题(促使您尝试此想法),人们可能会找到更好的解决方案,因为执行必须同时进行,只有对象/类才能工作。我试过第一个。但是print(self.g)的结果是0。类乐趣:def uu init uuuu(self,a,b,m,n):self.x=0 def fun1(self):self.x=m+n print(self.g)def fun2(self):self.g=a+b print(self.x)xyz=Fun(1,2,3,4)xyz.fun1()因为执行必须同时进行,所以只有对象/类才能工作。我试过第一个。但是print(self.g)的结果是0。类乐趣:定义初始定义(self,a,b,m,n):self.x=0 self.g=0定义fun1(self):self.x=m+n打印(self.g)定义fun2(self):self.g=a+b打印(self.x)xyz=Fun(1,2,3,4)xyz.fun1()xyz.fun2()