我想要的只是为变量" 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()
答案 0 :(得分:2)
在函数中添加一行:
global extra_devices
然后你可以在函数中写入全局变量。
原因是因为您可以在函数中更改该变量,并且解释器会将其定义为局部变量而不是全局变量来保护全局变量,除非您指定该变量是全局变量。
<强>更新强>
添加原因。