[英]Access a Python variable which is inside a function, in another function
假设我有一个函数:
func1():
do something
a,b = somevalues,somevalues
现在让我们说我还有另一个功能:
func2():
do something
我现在想在func2()
中使用在func1()
内部计算的a,b
。
我尝试使用
func1():
do something
a,b = somevalues, somevalues
func1.a = somevalues
func1.b = somevalues
func1()
func1.a
但是使用此方法,每次使用a,b
之前我都必须运行func1()
。
func1()
还会创建一些图以及计算a,b
。
那么有可能在func2()
利用a,b
而不调用func1()
吗?
这可能就是您想要的。 另外,我建议您阅读Python入门教程。
func1():
#do something
a,b = somevalues, somevalues
return a, b
func2(a, b):
#do something on a and b
a, b = func1()
func2(a, b)
class class1():
a,b = somevalues, somevalues
@staticmethod
def func1():
do something
func2(class1.a, class1.b)
class1.func1()
这种方法起作用而您的方法不起作用的原因与Python处理函数和类的方式有关。
在第一次调用之前,函数的主体不会执行。 因此,当您拥有:
def func1():
func1.a = somevalue
...您已经发现,直到func1
至少一次,您才能访问func1.a
。
但是,对于类,类的主体在编译代码时运行。 这样,当您这样做时:
class example:
a = somevalue
...您可以立即访问example.a
。
编辑:
回答注释中的问题:使用类本身(如Python中那样,类ARE对象,就像其他任何对象一样)访问上图所示的func1
, a
或b
:
class1.a
class1.func1()
您还可以为自己创建一个快捷方式:
func1 = class1.func1
func1()
做事的另一种方法-使您可以使用不同版本的a
和b
是使a
和b
实例属性代替类属性。
class class1:
def __init__(self, a, b):
self.a, self.b = a, b
@staticmethod
def func1():
dosomething
obj1 = class1(somevalue1A, somevalue1B)
obj2 = class1(somevalue2A, somevalue2B)
func2(obj1.a, obj1.b)
func2(obj2.a, obj2.b)
obj1.func1()
obj2.func1()
class1.func1()
最后三行都调用相同的函数,因为obj1.func1
, obj2.func1
和class1.func1
都指向class1
的相同方法。 请注意,您可以同时从类( class1
)和实例( obj1
, obj2
)调用func1
的原因是func1
是静态方法。
func1():
do something
a,b = somevalues,somevalues
return a, b
x, y = func1()
现在您可以在任何地方使用x
和y
,而无需每次都func1()
。 例如,在func2()中这样:
def func2(a, b):
do something
然后,分别使用x和y调用func2()
:
func2(x, y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.