我正在尝试编写一个可以定义函数的函数。
我试过这个:
def function_writer():
print "I am a function writer"
def new_function():
print "I am a new function"
pass
pass
function_writer()
new_function()但是,我的调试器抱怨没有定义new_function,因此这显然不是实现它的方法。
有人知道怎么做吗?
谢谢。
发布于 2013-11-06 23:39:05
def function_writer():
print "I am a function writer"
def new_function():
print "I am a new function"
return new_function
fn_dynamic = function_writer()
fn_dynamic() #call new_function也许你在找什么?(这几乎是装潢师所做的.除非它们修改传递的方法)
另一种解决办法(这不是一个好建议,而是回答问题)
def function_writer():
print "I am a function writer"
def new_function():
print "I am a new function"
globals()['new_function'] = new_function
function_writer()
new_function()这种类型的功能通常在python中被避免,除非您有一个非常有说服力的理由来解释这绝对是您所需要的。
发布于 2013-11-06 23:38:24
您的代码失败的原因与以下代码抱怨未定义i的原因完全相同:
def integer_writer():
i = 0
integer_writer()
ii是函数integer_writer中的局部变量,new_function是函数function_writer中的局部变量。
你可以这样做:
def function_writer():
print "I am a function writer"
def new_function():
print "I am a new function"
return new_function
new_function = function_writer()
new_function()在这种情况下,似乎没有太大的意义(就像通常定义一个总是返回0的函数一样),但是如果function_writer要接受一些参数,如果在它返回的函数中使用了这些参数,那么您将处于业务状态。
发布于 2013-11-06 23:37:08
当然,这会导致错误,因为new_function仅限于function_writer作用域。
def function_writer():
print "I am a function writer"
def new_function():
print "I am a new function"
pass
return new_function
a = function_writer()
#output: "I am a function writer"
a()
#output: "I am a new function"https://stackoverflow.com/questions/19825097
复制相似问题