目标:需要在另一个函数中使用局部变量。这可能在Python中吗?
我想在其他一些函数中使用局部变量。因为在我的情况下,我需要使用计数器来查看发生的连接数和释放的连接数/为此我维护一个计数器。为了实现这一点,我已经编写了count的示例代码并在另一个函数中返回局部变量。
如何打印t
& my_reply
函数中的test()
?
代码: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 counter_glob.py
0
('my_test:', 1)
('reply:', 1)
('ttttt:', 1)
答案 0 :(得分:1)
有多种方法可以访问函数的本地范围。如果需要,可以通过调用locals()
返回整个本地范围,这将为您提供函数的整个本地范围,这对于保存本地范围是非典型的。对于您的函数,您可以在函数本身中保存所需的变量, func.var = value
:
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)
您现在可以正常访问t
和reply
。每次调用您的函数my
和reply
时都会更新,foo
返回的任何内容都将分配给my.reply
。
答案 1 :(得分:0)
据我所知,您无法访问本地变量外部函数。但即使你认为这也是一种不好的做法。
为什么不使用函数或类。
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()))
答案 2 :(得分:0)
除closure
以外,您无权访问函数范围之外的本地变量。
如果必须在不同方法之间共享变量,那么最好使它们像@pavnik所提到的那样全局化。