从Python中的返回函数获取属性 def outerFunc(编号): 如果数字
print语句的结果是从Python中的返回函数获取属性 def outerFunc(编号): 如果数字,python,closures,Python,Closures,print语句的结果是-32,正如预期的那样。我正在使用Python 3.5.2 关于此代码段,我想问两个问题: 在使用语句x=outerFunc(-8)将innerFunc绑定到x之后,是否可以访问内部函数的number属性?换句话说:在执行关闭后,是否可以直接访问编号(在本例中为-8)的保留值 根据if语句的求值返回函数是否是一种好的编程风格?我个人认为有更好的方法,但我不确定 谢谢你的帮助 是否可以访问内部函数的number属性 这不是财产。您可以从技术上访问它,但不是以一种特别好的方式:
-32
,正如预期的那样。我正在使用Python 3.5.2
关于此代码段,我想问两个问题:
x=outerFunc(-8)
将innerFunc
绑定到x
之后,是否可以访问内部函数的number
属性?换句话说:在执行关闭后,是否可以直接访问编号
(在本例中为-8
)的保留值number
属性
这不是财产。您可以从技术上访问它,但不是以一种特别好的方式:
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))
根据if语句的求值返回函数是否是一种好的编程风格
是的,很好
谢谢你的帮助。你的建议很管用。很抱歉,如果我表示
number
a属性。在这种情况下,我不确定这个词是否正确。你怎么称呼它?@6q9nqBjo:闭包变量。试图访问内部结构不是一种好的风格。你为什么想得到号码
?你完全正确。访问这些结构是一个非常糟糕的想法。我决不会在任何生产性代码中使用它。在这种情况下,我只是想了解闭包在内部是如何工作的。
number = x.__closure__[0].cell_contents