为函数添加局部变量

2 投票
4 回答
2271 浏览
提问于 2025-04-16 08:07

在调用一个函数之前,能不能给它添加一个本地变量?如果可以的话,怎么做呢?

补充说明:原因是我发现我在Django中的所有视图都在使用

render_to_response(template_name,locals())

现在我创建了一个中间件,想通过它的方法再添加一个本地变量,这样我就不需要修改视图了。

def process_view():

4 个回答

1

虽然我也觉得这个没什么用,但我想你可以把这个函数放在一个'with'语句里,或者放在另一个函数里面,就像下面的代码那样。当然,这种做法也可以直接在你关心的那个函数内部实现。实际上,你是在函数声明的时候添加了一个局部变量'during'。看看这样是否符合你的需求!

#!/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"

只是一些想法 :)

祝好

7

一个函数的局部作用域在函数被调用之前是不存在的,所以你不能这样做。不过,如果是闭包的话,你可以这样做,但下一个维护这个代码的人可能会非常不高兴,甚至会想要找你算账。

0

我通过使用装饰器成功实现了这个功能。

撰写回答