Все, что я хочу, это назначить некоторое начальное значение переменной «extra_devices», и если пользователь задает некоторое значение этой переменной во время выполнения, значение по умолчанию заменяется на указанное пользователем значение. Я добавляю минимальный фрагмент кода, чтобы показать, что я делаю.Доступ к глобальной переменной
При запуске этой программы, если я не укажу «extra_devices», программа не запускается, говоря «UnboundLocalError: локальная переменная« 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()
Я бы предложил «написать», а не «доступ», но да. –
Нет. Но я могу получить доступ к другим переменным. Проблема возникает из-за того, что args.extra_devices не является None: extra_devices = args.extra_devices. Если я удалю эту строку, она отлично работает. – Pretty
@ Довольно, вы действительно попробовали предложение, данное здесь, прежде чем комментировать? –