是否可以在调用之前向函数添加局部变量?如果是的话怎么样?
编辑:原因 我注意到我在django中的所有观点都在使用
render_to_response(template_name,locals())
现在我创建了一个中间件,我想使用
添加一个局部变量def process_view():
它的方法。所以我不必修改视图。
答案 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)
我设法使用装饰器来做到这一点。