2015-09-28 139 views
-2

我有一个小问题,同时调用python中的多个变量函数到另一个函数。就像我必须访问yyy()中xxx()变量的变量。帮助我做到这一点。?如何在另一个函数中访问函数变量

例子:

def xxx(): 
     a=10 
     b=15 
     c=20 

def yyy(): 
     xxx() 
     print a  ### value a from xxx() 
     print b  ### value b from xxx() 

yyy() 

回答

5

从你的第一个函数返回他们在你的第二个函数接受它们。示例 -

def xxx(): 
    a=10 
    b=15 
    c=20 
    return a,b 

def yyy(): 
    a,b = xxx() 
    print a  ### value a from xxx() 
    print b  ### value b from xxx() 

yyy() 
+0

谢谢兄弟。它正在工作 – Ganeshgm7

-1

使用global关键字,像下面的例子:

global a=0 
global b=0 
global c=0 

def xxx(): 
    a=10 
    b=15 
    c=20 
    return a,b 

def yyy(): 
    print a 
    print b 
    xxx() 
+1

要格式化代码,请选择它并单击将其放入代码块的“{}”按钮。但是,此代码包含几个错误。请在SO上发布之前考虑测试代码。 –

1

试试这个:

def xxx(): 
    a=10 
    b=15 
    c=20 
    return a, b 

def yyy(): 
    a, b = xxx() 
    print a 
    print b 

yyy() 

或者这样:

def xxx(): 
    global a, b 
    a=10 
    b=15 
    c=20 

def yyy(): 
    print a 
    print b 

xxx() 
yyy() 

欲了解更多信息,使用help('return')help('global'),或参见thisthis的问题。

而且只有当你需要的变量可以在任何地方使用或你需要函数返回其他东西时才使用global。因为修改全局将打破模块化。

+0

请不要鼓励人们修改全局变量。它们对于常量是可以的,但是修改全局变量会打破模块化。无论如何,你的全局代码是错误的。你需要在'yyy'中使用'global a,b',并且你需要在某处调用'xxx'。 –

+0

@ PM2Ring首先,你是对的,我忘了调用'xxx()':P。但'yyy'中的'a,b'不正确。当你调用'yyy'时,它会引发一个'NameError'。 –

+0

如果'a'还没有被定义,当你尝试打印'a'时会引发'NameError'。但是如果你在'print'语句之前的'yyy'或者在调用'yyy'之前在全局范围内调用'xxx',那么你将不会得到'NameError'。 –

2

你不能。在函数中创建的变量对于该函数而言是本地的。所以如果你想让函数yyy获得函数xxx中定义的一些变量的值,那么你需要从xxx中返回它们,如Sharon Dwilif K的答案所示。请注意,yyy中变量的名称是不相关的;你可以写:

def yyy(): 
    p, q = xxx() 
    print p  ### value a from xxx() 
    print q  ### value b from xxx() 

它会给出相同的输出。您也可以创建一个custom class。简而言之,一个类是一组数据以及对这些数据进行操作的函数。类的函数称为方法,数据项称为属性。类的每个方法都可以有自己的局部变量,但它也可以访问类的属性。例如

class MyClass(object): 
    def xxx(self): 
     self.a = 10 
     self.b = 15 
     self.c = 20 

    def yyy(self): 
     self.xxx() 
     print self.a 
     print self.b 

#Create an instance of the class 
obj = MyClass() 

obj.yyy() 

输出

10 
15 

请参阅链接的文档,了解有关在Python类的更多信息。

0

上面给出的答案是正确的。但从设计角度来看,这不是正确的。方法局部变量的意思是本地的。如果有什么需要通过文件或一些方法共享,我建议你使用文件级变量或常量。

相关问题