import sys sys.version_info
Posts By: dmitry
Итераторы в Python
Определение итератора: class MyIter: def __init__(self, start, stop): self.value = start — 1 self.stop = stop def __iter__(self): return self def next(self): self.value += 1 if self.value > self.stop: raise StopIteration return self.value Работа с итератором: for i in MyIter (1,5): print i
auto increment в postgreSQL
Вообще, решение проблемы я нашел здесь http://neilconway.org/docs/sequences/. На случай если ссылка будет не доступна напишу самое главное: Создание таблицы CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT, age INT4 ); SERIAL — аналог auto_increment Создание записи: INSERT INTO users (name, age) VALUES (‘Mozart’, 20);
Объединение 2 словарей в Python
Объединение 2 словарей: a.update(b); Если ключи совпадают, то будет перезаписан значением из b. Пример: >>> a={‘a’:’1′,’b’:’2′} >>> b={‘b’:’3′,’c’:’4′} >>> a.update(b) >>> a {‘a’: ‘1’, ‘c’: ‘4’, ‘b’: ‘3’}
Не используй глобальные переменные
Размышления. Почему в функцию должны передаваться все параметры, а не использовать глобальные? Да потому что если захочешь эту функцию вызвать из другого класса (модуля), то её уже стоит поместить в отдельный модуль, а тут связь с глобальными переменными (переменными класса и т.д.) рушится
Нижний регистр переменных в хранимых функциях (PostgreSQL, plpythonu)
Пример: CREATE OR REPLACE FUNCTION myschema.find_available(num_State integer) RETURNS SETOF integer AS $BODY$ plan0= plpy.prepare(«SELECT id,start_available, stop_available FROM «Flat» WHERE state=$1″,[«integer»]) rv=plpy.execute(plan0,[num_State]) … BODY$ LANGUAGE ‘plpythonu’ VOLATILE … Выдает сообщение DETAIL: <type ‘exceptions.NameError’>: global name ‘num_State’ is not defined Приводим переменную num_State к нижнему регистру ( num_state) и ошибки уже нет.
Получение имени класса в Python
self.__class__.__name__ — даст имя текущего класса
md5 в Python
Делал логирование на сайте, сначала писал код так a= md5.new(«password»).digest() В результате значение «а» принимало бинарный(? незнаю как правильно сказать) вид и нельзя было записать в БД. Решение простое — нужно делать так: a= md5.new(«password»).hexdigest() Значение «а» можно писать в БД
Получение списка предков класса при множественном наследовании
Получение списка предков (родителей, «дедов» и «прадедов») класса при множественном наследовании: class A(object): pass class B(object): pass class C(A,B): def __init__(self): a=self.__class__.__mro__ print(a) if __name__==’__main__’: C()
Получение списка родителей класса при множественном наследовании
Получение списка родителей класса при множественном наследовании class A: pass class B: pass class C(A,B): def __init__(self): print(str(self.__class__.__bases__)) if __name__==’__main__’: C()
Свежие комментарии