访问全局变量

时间:2015-04-21 03:57:49

标签: python

我想要的只是为变量" extra_devices'分配一些初始值。如果用户在运行时为此变量指定了某个值,则默认值将替换为用户指定的值。我正在添加一个最小的代码片段来显示我在做什么。

在运行此程序时,如果我没有指定' extra_devices',则程序无法运行说“UnboundLocalError:local variable' extra_devices'在赋值之前引用,但我不明白原因,因为我已经为它赋值了。但是,如果我指定' extra_devices'在运行时。任何人都有这种行为的理由吗?

注意变量' abc'在main()中打印得很好。

    #/usr/bin/python
    import argparse
    extra_devices=10
    abc = 1
    def main():

        parser = argparse.ArgumentParser(description='')
        parser.add_argument('-extra_devices','--extra_devices',help='extra_devices',required=False)
        args = parser.parse_args()
        if args.extra_devices is not None: extra_devices = args.extra_devices
        print "abc="+str(abc)

        print "extra_devices = "+str(extra_devices)

    if __name__ == '__main__':
        main()

1 个答案:

答案 0 :(得分:2)

在函数中添加一行:

global extra_devices

然后你可以在函数中写入全局变量。

原因是因为您可以在函数中更改该变量,并且解释器会将其定义为局部变量而不是全局变量来保护全局变量,除非您指定该变量是全局变量。

<强>更新

添加原因。