向函数添加局部变量

时间:2010-12-06 16:21:04

标签: python

是否可以在调用之前向函数添加局部变量?如果是的话怎么样?

编辑:原因 我注意到我在django中的所有观点都在使用

render_to_response(template_name,locals())

现在我创建了一个中间件,我想使用

添加一个局部变量
def process_view():

它的方法。所以我不必修改视图。

4 个答案:

答案 0 :(得分:8)

在调用函数之前,函数的本地范围不存在,因此无法执行此操作。你可以为闭包执行此操作,但是下一个必须维护代码的人会抓住你并杀死你。

答案 1 :(得分:1)

虽然我也认为它没用,但我认为你可以将函数包含在'with'语句或其他函数中,如下面的代码所示。当然,这种方法可以直接在感兴趣的功能内完成。实际上,您在函数声明中添加了局部变量''。看看这是否符合您的需求!

#!/usr/bin/python

def my_funct(_local):
    """My function of interest
    """
    print "Local argument was %s" % str(_local)
    return "Finished"

def localize(fct, local_var):
    """
    """
    return fct(_local = local_var)

## Use function to 'localize' variable
localize(my_funct, local_var="LOCAL_VARIABLE")

## Same effect without supplementary function :
my_funct(_local="LOCAL_VARIABLE")

try:
    print local_var
except:
    print "No such global variable"

只是一些想法:)

干杯

答案 2 :(得分:0)

  

所以,如果你是那些懒惰的人之一   程序员和你喜欢保持代码   特别简洁,你可以采取   内置Python的优势   函数叫做locals()。它返回一个   字典映射所有局部变量   命名为他们的值,其中“本地”   表示已经存在的所有变量   在当前范围内定义。   source

这是一个技巧,以便不必明确列出您需要传递给函数的所有变量。在这种情况下,您需要显式声明要传入的变量。因此,您不应该在中间件中进行的调用中使用locals(),因为这个技巧并不是设计为像那样使用

答案 3 :(得分:0)

我设法使用装饰器来做到这一点。