Почему FLAGS хранит значение как другие переменные

1

В следующем коде я получаю сообщение об ошибке, что объект типа None не имеет атрибута x. Когда я запускаю следующий код, удаляя FLAGS, он отлично работает. Но я хочу присвоить эти значения FLAGS, потому что в моем фактическом коде я хочу назначить разные значения FLAGS. Как я могу исправить эту проблему?

FLAGS = None
c1 =[1.5, 2.0, 2.5]

for i in range(len(c1)):
    FLAGS.x = c1[i]
    print(FLAGS.x)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--x', type=float, default=2.0)
    FLAGS = parser.parse_args()
Теги:

1 ответ

2
Лучший ответ

Ваш код выше, if __name__ == '__main__': выполняется до того, как была инициализирована переменная FLAGS. Попробуйте что-то вроде этого

import argparse

FLAGS = None
c1 =[1.5, 2.0, 2.5]

def main():
    for i in range(len(c1)):
        FLAGS.x = c1[i]
        print(FLAGS.x)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--x', type=float, default=2.0)
    FLAGS = parser.parse_args()
    main()
  • 0
    Обязательно ли указывать для цикла в функции main ()? Могу ли я сделать это без main ()
  • 0
    если вам не нужна основная функция, вам нужно переместить for i in range(len(c1)): зациклиться ниже FLAGS = parser.parse_args() внутри if __name__ == '__main__':

Ещё вопросы

Сообщество Overcoder
Наверх
Меню