Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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 如何访问另一个函数中的函数变量_Python - Fatal编程技术网

Python 如何访问另一个函数中的函数变量

Python 如何访问另一个函数中的函数变量,python,Python,在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()

在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()

从第一个函数返回它们,并在第二个函数中接受它们。范例-

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()

使用
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()
试试这个:

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')
,或参阅和提问


只有在需要时才使用
global
,变量可以在任何地方使用,或者需要函数返回其他内容。因为修改全局变量会破坏模块性。

你不能。在函数中创建的变量是该函数的局部变量。因此,如果希望函数
yyy
获取函数
xxx
中定义的某些变量的值,则需要从
xxx
返回它们,如Sharon Dwilif K的回答所示。请注意,
yyy
中变量的名称是不相关的;你可以写:

def yyy():
    p, q = xxx()
    print p        ### value a from xxx()
    print q        ### value b from xxx()
它将给出相同的输出

或者,您可以创建一个。简单地说,类是一组数据以及对该数据进行操作的函数。类的函数称为方法,数据项称为属性。类的每个方法都可以有自己的局部变量,但它也可以访问类的属性。乙二醇

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类的更多信息,请参阅链接文档。

上面给出的答案是正确的。但从设计角度来看,这是不正确的。方法局部变量是指局部变量。如果需要在一个文件或一组方法中共享某些内容,我建议您使用文件级变量或常量。

请不要鼓励人们修改全局变量。它们对于常量是可以的,但是修改全局变量会破坏模块化。总之,你的全局代码是错误的。您需要在
yyy
中调用
全局a,b
,您需要在某处调用
xxx
。@pm2首先,您是对的,我忘记了调用
xxx()
:P。但是
yyy
中的
全局a,b
是不正确的。当您调用
yyy
时,它将引发
namererror
。如果
a
尚未定义,当您尝试打印
a
时,它将引发
namererror
。但是如果您在
print
语句之前的
yyy
中调用
xxx
,或者在调用
yyy
之前的全局范围中调用
xxx
,那么您将不会得到
名称错误,b
yyy
中,因为
yyy
不修改
a
b
。很抱歉。正如你可能猜到的,我很少使用globals.:)@PM2R正常:)。我已经编辑了我的答案来解释选择
global
return
。要格式化代码,请选择它并单击
{}
按钮,将其放入代码块中。但是,此代码包含几个错误。在发布测试代码之前,请考虑测试代码。