Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python中的返回函数获取属性 def outerFunc(编号): 如果数字_Python_Closures - Fatal编程技术网

从Python中的返回函数获取属性 def outerFunc(编号): 如果数字

从Python中的返回函数获取属性 def outerFunc(编号): 如果数字,python,closures,Python,Closures,print语句的结果是-32,正如预期的那样。我正在使用Python 3.5.2 关于此代码段,我想问两个问题: 在使用语句x=outerFunc(-8)将innerFunc绑定到x之后,是否可以访问内部函数的number属性?换句话说:在执行关闭后,是否可以直接访问编号(在本例中为-8)的保留值 根据if语句的求值返回函数是否是一种好的编程风格?我个人认为有更好的方法,但我不确定 谢谢你的帮助 是否可以访问内部函数的number属性 这不是财产。您可以从技术上访问它,但不是以一种特别好的方式:

print语句的结果是
-32
,正如预期的那样。我正在使用Python 3.5.2

关于此代码段,我想问两个问题:

  • 在使用语句
    x=outerFunc(-8)
    innerFunc
    绑定到
    x
    之后,是否可以访问内部函数的
    number
    属性?换句话说:在执行关闭后,是否可以直接访问
    编号
    (在本例中为
    -8
    )的保留值
  • 根据if语句的求值返回函数是否是一种好的编程风格?我个人认为有更好的方法,但我不确定
  • 谢谢你的帮助

    是否可以访问内部函数的
    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