2013-07-05 87 views
0

定义的变量我有一个大的功能,在其内部嵌套的一些功能,如下所示:访问在功能

def primary(input): 

    def second(): 
     print "something" 

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

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

+1

我强烈建议你重新考虑你的代码的结构,如果这是你所需要的。 –

回答

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() 
0

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

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

treasure = "Success!" 

def second(): 
    print "Something." 

def third(): 
    print treasure 

third() 

祝你好运。

+0

除非您使用'global'关键字,否则您将无法修改变量:>>> treasure =“Success!” >>> def fourth(): ...宝藏=“岛!” ... >>>第四个() >>>宝藏 '成功!'' – 2rs2ts