是否可以在另一个函数中访问局部变量?

时间:2016-09-25 02:32:23

标签: python python-2.7 python-3.x

目标:需要在另一个函数中使用局部变量。这可能在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)

3 个答案:

答案 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)

您现在可以正常访问treply。每次调用您的函数myreply时都会更新,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所提到的那样全局化。