Python含内部函数的自定义幂运算函数返回None,如何修正?
修正Python幂运算函数返回None的问题
你的代码返回None的核心问题有两个:
- 内部函数
inner没有返回语句,执行完后默认返回None inner的square和cube参数是多余的,你直接使用了外部函数的Amount1和Amount2,但计算结果没有传递出来
修正后的代码如下:
def calculate(Amount1, Amount2): def inner(): square = Amount1 ** 2 cube = Amount2 ** 3 return (square, cube) return inner() print(calculate(2,4)) # 输出 (4, 64)
修正说明:
- 移除
inner的多余参数:内部函数可以直接访问外部函数的Amount1和Amount2,不需要额外传参 - 给
inner添加返回语句:计算完成后返回square和cube组成的元组 - 外层函数返回
inner()的执行结果:这样calculate就能拿到内部函数的计算结果并返回
如果一定要保留inner的参数(虽然没必要),也可以改成这样:
def calculate(Amount1, Amount2): def inner(num1, num2): square = num1 ** 2 cube = num2 ** 3 return (square, cube) return inner(Amount1, Amount2) print(calculate(2,4)) # 输出 (4, 64)
这里inner使用传入的num1和num2计算,同时添加返回语句,就能得到正确结果。
内容的提问来源于stack exchange,提问作者DS998811
相关产品推荐
相关产品推荐

