Python 如何访问另一个函数中的函数变量
在python中调用多个变量时,我遇到了一个小问题,一个函数调用另一个函数。就像我必须访问yyy()中xxx()变量的变量一样。帮我做这件事 示例: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()
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
。要格式化代码,请选择它并单击{}
按钮,将其放入代码块中。但是,此代码包含几个错误。在发布测试代码之前,请考虑测试代码。