Python高阶函数场景下如何向外层函数的内嵌函数传参?
问题解决方法
你当前代码的问题是makeTriangle末尾没有返回内层定义的triangle函数,只要修改返回值即可实现需求:Python的闭包特性会自动让内层triangle函数持有外层传入的sign参数,这就是高阶函数的典型实现逻辑。
修改后的完整代码
def makeTriangle(sign): def triangle(n): result = '' for i in range(1, n+1): result += sign * i + '\n' return result # 直接返回内层函数对象,不需要加括号调用 return triangle
使用示例
# 第一步传入符号,得到对应符号的三角形生成函数 hash_triangle = makeTriangle('#') # 第二步传入层数,直接生成对应三角形 print(hash_triangle(4))
运行输出:
实现逻辑说明
- 这里的
makeTriangle就是高阶函数,它接收符号参数后,会返回一个专用的三角形生成函数 - 返回的
triangle函数会自动保留外层传入的sign参数,后续调用时不需要重复传入符号,仅需传入层数即可
内容的提问来源于stack exchange,提问作者user16984591
相关产品推荐
相关产品推荐

