О UnboundLocalError: локальная переменная 'font_size', на которую ссылается перед назначением в Python

1

Я просто запускаю следующий код и надеюсь получить font_size вне команды with но получаю эту ошибку:

def text_image(text_path, font_path = None):

     with open(text_path, 'r+', encoding='utf-8') as text_file:
         for num, data in enumerate(text_file, 1):
             lookup4font_size = 'Font-size:'

              if lookup4font_size in data:
                 font_size = next(text_file)
     print(font_size)

и я получаю эту ошибку:

UnboundLocalError: local variable 'font_size' referenced before assignment

Кто-нибудь может помочь мне решить эту проблему. Большое спасибо.

  • 0
    Зачем вам нужно return font_size ? Это завершит функцию, иначе print(font_size) никогда не запустится. Либо print(font_size) на самом деле print(text_image(args)) либо return font_size должен быть удален.
  • 0
    Извините, я отредактировал свой вопрос.
Теги:
python-3.x
pycharm

1 ответ

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

Если ваш цикл не находит то, что он ищет, он заканчивается и пытается print(font_size). Но он устанавливает font_size только в font_size случае, если он находит то, что ищет (а затем return s, поэтому print никогда не достигается в тех случаях, когда font_size существует). Удалить print; это определенно никогда не будет возможно для этого, чтобы преуспеть.

  • 0
    Извините, я отредактировал свой вопрос
  • 0
    @QHChu: редактирование не сильно меняется. Если ваш цикл никогда не находит данные, которые он ищет, он никогда не присваивает font_size , поэтому, когда он заканчивается, попытка использовать font_size неудачей. Вы можете присвоить ему значение по умолчанию до начала цикла, поэтому, если цикл завершится неудачно, вы не попытаетесь прочитать неинициализированное значение или вы могли бы выяснить, почему в вашем файле данных нет строк, которые вы ожидаете увидеть , но фундаментальная проблема заключается в попытке чтения из переменной, которая никогда не была назначена во время этого вызова функции.
Показать ещё 1 комментарий

Ещё вопросы

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