Python 是否可以在另一个函数中访问局部变量?
目标:需要在另一个函数中使用局部变量。这在Python中是可能的吗 我想在其他函数中使用局部变量。因为在我的例子中,我需要使用一个计数器来查看发生的连接数和释放的连接数/为此,我维护一个计数器。为了实现这一点,我编写了计数示例代码,并在另一个函数中返回局部变量 如何在Python 是否可以在另一个函数中访问局部变量?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,目标:需要在另一个函数中使用局部变量。这在Python中是可能的吗 我想在其他函数中使用局部变量。因为在我的例子中,我需要使用一个计数器来查看发生的连接数和释放的连接数/为此,我维护一个计数器。为了实现这一点,我编写了计数示例代码,并在另一个函数中返回局部变量 如何在test()函数中打印t和my_reply 代码:counter_glob.py my_test = 0 t = 0 def test(): print("I: ",t) print("IIIIIIII: ",my
test()
函数中打印t
和my_reply
代码:counter_glob.py
my_test = 0
t = 0
def test():
print("I: ",t)
print("IIIIIIII: ",my_reply)
def my():
global t
reply = foo()
t = reply
print("reply:",reply)
print("ttttt:",t)
def foo():
global my_test
my_test1 = 0
my_test += 1
print my_test1
my_test1 = my_test
my_test += 1
print("my_test:",my_test1)
return my_test1
my()
结果:
$python计数器\u glob.py
0
(“我的测试:”,1)
("答复",1)
(‘ttttt:’,1)
正如我所知,您无法访问函数外部的局部变量。但在我看来,即使你能做到,这也是一种不好的做法
为什么不使用函数或类呢
connections = 0
def set_connection_number(value):
global connections; connections = value;
def get_connection_number():
global connections;
return connections;
# test
set_connection_number(10)
print("Current connections {}".format(get_connection_number()))
访问函数的本地范围有不同的方法。如果需要,可以通过调用
locals()
返回整个局部范围。这将为您提供函数的整个局部范围,保存局部范围是不典型的。对于函数,您可以将所需的变量保存在函数本身中,func.var=value
:
您现在可以正常访问
t
和reply
。每次调用函数my
和reply
时,将更新foo
返回的任何内容,并将其分配给my.reply
除了关闭
之外,您将无法访问功能范围之外的本地变量。
如果必须在不同的方法之间共享变量,最好像@pavnik所提到的那样使它们成为全局变量。不,你不能,这就是“局部”的意思。除此之外,在代码中的任何地方都没有定义名为
my_reply
的任何类型的变量。在示例代码中,我有一个my函数,在我的函数中,我将reply赋值给全局变量。当我在函数中打印全局变量时,即t。按预期打印值。但我不知道为什么在测试功能中它不打印?因为t在my函数中用reply更新。在函数my()
中,将一个值分配给名为reply
的局部变量,然后将该值分配给名为t
的全局变量。在test()
函数中,您引用了t
、全局变量和另一个名为my_reply
的变量,该变量未在任何地方定义my_reply
不是其他函数中局部变量reply
的另一个名称。你不能那样做。您可以在my()
中创建函数属性,并使用另一个问题中所示的技术在test()
中访问它。这将允许您定义my.reply
。
def test():
print("I: ", my.t)
print("IIIIIIII: ", my.reply)
def my():
my.reply = foo()
my.t = m.reply
print("reply:", my.reply)
print("ttttt:", my.t)