2016-01-19 3 views
0

Я пытаюсь вернуть абсолютное значение числа, но сделаю это, когда используется строка, она печатает «Нет». Тем не менее, я получаю сообщение об ошибке «UnboundLocalError: локальная переменная», указанная перед назначением.UnboundLocalError: локальная переменная 'привязана перед назначением

def absolute_value_safe(value): 
    if type(value) == str: 
     print ('None') 
    else: 
     s= abs(value) 
    return s 
+0

FWIW, делая сверхновые типа (что-то) == some_type' не считается хорошим тоном. Обычно вы хотите использовать 'isinstance (something, some_type)' – mgilson

ответ

0

Если первый случай условия триггеров s не назначается так return s не определена.

Просто убедитесь, что он всегда назначается перед его возвращением:

def absolute_value_safe(value): 
    if type(value) == str: 
     print ('None')  # Was this even intended to be here? 
     s = None 
    else: 
     s= abs(value) 
    return s 
Смежные вопросы