课程
/后端开发
/Python
/python进阶
是不是可以这样写:
def f1(x):
return x*2
def new_fn(f):
print 'call'+f._name_+'()'
return f
2018-07-26
源自:python进阶 2-11
正在回答
例子中定义了新函数fn,作用是除了包含旧函数的功能,还添加了前面print 'call...的功能,在新函数中,这两者是一个整体,而你这样定义的new_fn(f)里两者是独立的,它的逻辑是先打印 call f1(),然后return f1(x)旧函数,只是一个流程,这样单独用没问题。但由于返回函数的作用是延迟计算,你这里的new_fn函数的f会延迟计算,但前面的print 'call’部分不会,每次用@new_fn的时候,还未输入变量,print ‘call’都会先执行一遍。
宝慕林9160084 提问者
100对7取模(取余数)严格来说这样不好。
这里没有fn函数吧?? 代码写的也有问题。。。。不全......是不是指new_fn函数?装饰装饰,就是为了添加新功能,新函数扩展了新功能结合原函数。
如果这样写的话,返回的还是旧函数f,而不是新函数,而fn是包含了输出语句和旧函数功能的新函数
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计