为函数添加局部变量
在调用一个函数之前,能不能给它添加一个本地变量?如果可以的话,怎么做呢?
补充说明:原因是我发现我在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
我通过使用装饰器成功实现了这个功能。