访问函数中定义的变量

时间:2013-07-05 21:23:24

标签: python python-2.7 scope

我有一个大函数,里面嵌套了一些函数,如下所示:

def primary(input):

    def second():
        print "something"

    def third():
        treasure = "Success!"
        print treasure

第三个()函数定义宝贝变量并打印它。我应该如何更改此变量的范围,以便我可以从解释器中打印宝藏而无需调用任何函数,但仍允许函数访问/更改它?

2 个答案:

答案 0 :(得分:3)

你必须使它成为一个全球性的;函数中的局部变量不可访问,嵌套或以其他方式。

只需访问 treasure作为全球工作就可以了:

treasure = "Success!"

def primary(input):
    def second():
        print "something"

    def third():
        print treasure

要更改功能范围内的treasure,请使用global关键字将其声明为全局。

treasure = "Success!"

def primary(input):
    def second():
        print "something"

    def third():
        global treasure
        treasure = 'changed!'
        print treasure

    third()

答案 1 :(得分:0)

如果函数third()在宝藏面前添加关键字“global”。这允许其他函数使用该变量。

还有另一种方法可以做到这一点,即在代码开头定义var,这看起来好多了,而且是我学会如何做的方式。

treasure = "Success!"

def second():
    print "Something."

def third():
    print treasure

third()
祝你好运。