def outerFunc(number):
if number < 0:
def innerFunc(factor):
return number * factor
else:
def innerFunc(summand):
return number + summand
return innerFunc
x = outerFunc(-8)
print(x(4))
正如预期的那样,print语句的结果为-32
。我正在使用Python 3.5.2
我想问一下有关此代码段的两个问题:
number
绑定innerFunc
到x
后,是否可以访问内部函数的x = outerFunc(-8)
属性?换句话说:在执行闭包之后,是否可以直接访问number
的保留值,在本例中为-8
?感谢您的帮助。
答案 0 :(得分:2)
是否可以访问内部函数的
number
属性
这不是财产。您可以在技术上访问它,但不能以一种特别好的方式访问它:
number = x.__closure__[0].cell_contents
返回函数是不是很好的编程风格,具体取决于对if语句的评估?
是的,没关系。
答案 1 :(得分:-1)