Понимаем UnboundLocalError

Опять же на programmingwats.tumblr.com наткнулся на небольшую особенность питона.

my_str_1 = «1: outside of func»
my_str_2 = «2: outside of func»
def func_1():
    my_str_1 = «1: inside the func»
    my_str_2 = «2: inside the func»
    def func_2():
        print(my_str_1)
        print(my_str_2)
        my_str_1 = «1: inside the class»
    func_2()

func_1()
prints:
Traceback (most recent call last):
  File “”, line 1, in
  File “”, line 8, in func_1
  File “”, line 5, in func_2
UnboundLocalError: local variable ‘my_str_1’ referenced before assignment

В принципе на эту тему написано довольно много постов и погуглив можно спокойно найти объяснение. Но т.к. в свое время эта особенность питона попила у меня много кровушки я решил написать небольшой пост.

В чем причина такого поведения?
Причина заключается в том что питон преобразует переменную my_str_1 в локальную для func_2 и во время вызова функции print получает на вход не инициализированную переменную.
Решения проблемы тривиальные — либо убрать print, либо изменить название переменной, или объявить my_str_1 как глобальную.

Кто хочет более подробно ознакомиться с причинами такого поведения см ссылки, особенно с [2]

Ссылки

[1]https://docs.python.org/2/faq/programming.html#why-am-i-getting-an-unboundlocalerror-when-the-variable-has-a-value
[2]http://eli.thegreenplace.net/2011/05/15/understanding-unboundlocalerror-in-python/
[3]http://programmingwats.tumblr.com/page/2

Автор: Евгений Курочкин

Добровольное страхование имущества граждан

Добровольное страхование имущества граждан

Добровольное страхование имущества
граждан
================================================================================
moneyprofyru moneyprofyru on 29/07/2014 12:51:00

Получение займа сегодня — очень
неоднозначный нюанс, особенно если вы
трудитесь не официально. Банки слишком
щепетильно отбирают запросы о оформлении
кредита и в этом моменте стоит быть весьма
внимательным, на изучение берётся и история
кредита просителя и сведения о доходах.
Если вдруг вы ранее получали какой-либо
кредит в каком либо банке РФ, и не оплатили
во время кредитку (пусть никчемную сумму) на
очень незначительный период — все это
записывается в вашу финансовую историю,
после этого, могут произойти проблемы с
получением кредита.
Преодолению данных проблем помогает
компетентность в определённых вопросах
выдачи денег. Я советую каждому
изданиеMoneyProfyоно освещает все основные
вопросы кредитования, счетов, страховок и
похожих финансовых вопросов. Кредиторы, без
официальных подтверждений того что они
работают, узнают массу важных моментов из
статьи — кредит наличными неработающим. Для
вас необходимо изучить важные заметки про
самые лучшие кредитные карты. Касательно
вышеупомянутых нюансов с историей выдачи
вам кредита, более подробно читайте про
займы без проверки кредитной истории. Если
вдруг вы увлекаетесь страхованием, а вы не
знаете как стоит оформить страховку,
ознакомитесь со статьёй добровольное
страхование имущества граждан.
Вдруг желаете увеличить свои деньги и
послать потоки денег в нужное русло,
читайте список: самые надёжные банки для
вкладов, тут описаны банки с безупречной
деловой репутацией. Прочтите полезные для
вас и вашего преуспевания публикации.
Актуальные полезные советы по кампаниям
описаны выгодные автокредиты в 2014 году.
Грамотно и целесообразно занимайтесь
потоками финансов и однозначно ваше
материальное благоденствие возрастёт.

Таинственная Сила Любви

любовь loveДавным-давно жил один старик. Жил он в старом храме. Часто к храму приходили играть дети. Самым озорным был мальчик по имени Таро.
Однажды, когда он играл на ступеньках храма, к нему прилетели три воробья, и один из них сказал:
— Самая великая вещь в этом мире это Солнце. Благодаря солнцу наш мир так прекрасен…Но люди, привыкшие к его свету, воспринимают солнце как обычное явление.

Читать

Пять золотых правил, чтобы сохранить глаза здоровыми

Глаза не только зеркало души, но еще и единственный орган у человека, без которого сложно говорить о полноценной жизни. Проблемы со зрением имеются практически у каждого третьего жителя планеты. Близорукость и дальнозоркость, к сожалению,  не весь перечень глазных «проблем», мешающих каждому из нас нормально жить, трудиться и отдыхать. Чем лучше зрение, тем выше будет качество жизни и наоборот. Каждому человеку по силам самостоятельно следить за здоровьем  глаз. Всего лишь необходимо выработать для себя несколько простых, но очень действенных привычек. 1. Не курить Курение плохо влияет на зрение. Организм курильщика плохо воспринимает и усваивает полезные вещества, микроэлементы и витамины, необходимые для глаз. К тому же сам по себе табачный дым является мощным раздражителем и вызывает синдром сухого глаза. Курение может спровоцировать появление катаракты, а также ухудшить зрение. 2. Не сидеть слишком долго за компьютером. Сегодня многие читают  электронные книги и забывают об обычных изданиях периодики. А зря. Постоянное нахождение около монитора даже, если речь идет о планшете, вредит глазам. Во время чтения или печати глаза фактически находятся в неподвижном состоянии и фокусируются в одной точке. Следует регулярно делать гимнастику глаз, даже самые элементарные упражнения, к примеру, читая электронные книги, отвести глаза в сторону и посмотреть в потолок/в окно/в пол и т.д., помогут глазам расслабиться и отдохнуть. 3. Носить солнцезащитные очки. Это обязательно в любое время года. Очки следует носить в солнечную погоду постоянно. Ультрафиолет приводит к появлению целого ряда негативных изменений зрения. Это и макулярная дегенерация, развитие катаракты, повреждение роговицы и другие заболевания. 4. Сдавать регулярно анализ крови на уровень сахара. Его постоянно высокие показатели свидетельствуют о развитии диабета. А это заболевание влечет за собой развитие заболеваний глаз: глаукомы, ретинопатии и катаракты. Постоянное колебание сахара может спровоцировать изменения в глазном хрусталике и ухудшению зрения. 5. Следите за состоянием артериального давления. Повышенное давление – причина гипертонической ретинопатии. Если данную болезнь вовремя не начать лечить, то, как результат, это приведет к развитию слепоты. Высокое артериальное давление также провоцирует глаукому, а также макулярную дегенерацию.

python 2 утечка переменных цикла

Проглядывая programmingwats.tumblr.com нашел небольшую особенность python 2.

Посмотрим на пример:

>>>x = «top»
>>>print(list(«a» for x in (1,2)), x)
>>>print([«a» for x in (1,2)], x)

([‘a’, ‘a’], ‘top’)
([‘a’, ‘a’], 2)

Это бага питона, связанная с тем что локальная переменная x, используемая при создании списка становилась доступной в родительском пространстве имен. Думаю понятно чем грозит данная бага.
Данная бага поправлена в python 3.

Ссылки

https://docs.python.org/3/whatsnew/3.0.html#changed-syntax
http://programmingwats.tumblr.com/page/2
http://nbviewer.ipython.org/github/rasbt/python_reference/blob/master/tutorials/key_differences_between_python_2_and_3.ipynb?create=1

Автор: Евгений Курочкин

Установка WordPress сайта на хостинг

Если вы когда-нибудь устанавливали CMS WordPress на хостинг, то знаете, что обычно это непростой процесс, который может затянуться на весь день. Однако установка Вордпресса на хостинг настолько проста, что обычно не вызывает затруднений даже у новичков.

Читать