Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Archy

Косвенный вызов функций в Python

19 ноября 2015 г. Archy Обсудить
Косвенный вызов функций в Python

Так как функции в языке Python являются объектами, можно написать такую программу, которая будет работать с ними, как с обычными объектами. Объекты функции могут присваиваться, передаться другим функциям, сохраняться в структурах данных и так далее, как если бы они были простыми числами или строками.

Кроме того, объекты функций поддерживают специальные операции: они могут вызываться перечислением аргументов в круглых скобках, следующих сразу же за выражением функции. И тем не менее, функции принадлежат к категории обычных объектов.

Мы встречали уже такие способы использования функций в более ранних примерах, тем не менее краткий обзор поможет нам лучше понять модель объектов.Далее...

Cоздаем скриншот любого сайта на Python с помощью QtWebKit

13 ноября 2015 г. Archy 3
Cоздаем скриншот любого сайта на Python с помощью QtWebKit

Здравствуй дорогой читатель! Как гласит пословица, одна картинка стоит тысячи слов. В нашем случае, стоимость одной картинке дойдет до несколько десятков строк кода. Встает вопрос, для чего вообще нужно делать скриншоты сайтов?

Тут ответы варьируют от человека к человеку, мне вот нужен был скрипт который раз в неделю сделает скриншот главной странице сайта. Вслед чего, последние две картинки сравнивались побайтно. В случае эквивалентности, скрипт прекратил работу в течение недели после чего снова картинки N и N-1 приступили к сравниванию. В случае когда байты картинок различались, скрипт автоматически запустил другой скрипт, в моем случае был (парсер or граббер or скраппер), тут на ваше усмотрение.

И так, для установки QtWebKit придется немного попотеть. Бывалые программисты/сисадмины сделают это одной левой. Тут pip3 и easy_install не катит, нужно установить бинарные пакеты.Далее...

Сравнение методов __getattr__ и __getattribute__ Python

18 октября 2015 г. Archy 1

Чтобы обобщить различия между методами __getattr__ и __getattribute__, в следующем примере используются оба метода для реализации доступа к трем атрибутам, в числе которых: attr1 - атрибут класса, attr2 - атрибут экземпляра и attr3 - виртуальный атрибут, значение которого вычисляется при обращении к нему:

class GetAttr:
    attr1 = 1
    def __init__(self):
        self.attr2 = 2
    def __getattr__(self, attr):   # Только для неопределенных атрибутов
        print('get: ' + attr)      # Не attr1: наследуется от класса
        return 3                   # Не attr2: хранится в экземпляре
    
X = GetAttr()
print(X.attr1)
print(X.attr2)
print(X.attr3)
print('-' * 40)
class GetAttribute(object):
    attr1 = 1
    def __init__(self):
        self.attr2 = 2
    def __getattribute__(self, attr):  # Вызывается всеми операциями присваивания
        print('get: ' + attr)          # Для предотвращения зацикливания используется суперкласс
        if attr == 'attr3':
            return 3
        else:
            return object.__getattribute__(self, attr)
        
X = GetAttribute()
print(X.attr1)
print(X.attr2)
print(X.attr3)
Далее...

Инструкция try/else в Python

17 октября 2015 г. Archy Обсудить
intructzia-try-else-python.png

Назначение предложения else в инструкции try на первый взгляд не всегда очевидно для тех, кто только начинает осваивать язык программирования Python.

Тем не менее, без этого предложения нет никакого другого способа узнать(не устанавливая и не проверяя флаги) - выполнение программы продолжилось потому, что исключение в блоке try не было возбуждено, или потому, что исключение было перехвачено и обработано.

Пример:

try:
    # Выполняемый код
except:
    # Обработка исключения
# Программа оказалась здесь потому, что исключение было обработано
# или потому, что его не возникло?

Точно так же, как инструкция else в операторах цикла делает причину выхода из цикла более очевидной, предложение else в инструкции try однозначно и очевидно сообщает о произошедшем:Далее...

Как воспроизвести аудио (.mp3) на Python

16 октября 2015 г. Archy Python для начинающих 4

mp3 python

В данной статье мы покажем как можно воспроизвести аудио файлы в разных библиотеках на Python. Python универсальный язык программирование и в нем можно манипулировать не только текстом и цифрами но и аудио-видео файлами. Ниже мы покажем код как работать с mp3 в разных библиотеках.

Библиотека PyGame

Что же такое Pygame? Pygame - это кроссплатформенная библиотека языка Python, предназначенная для написания компьютерных игр и мультимедиа приложений. PyGame базируется на библиотеке SDL.

import pygame
pygame.init()
song = pygame.mixer.Sound('file.mp3')
clock = pygame.time.Clock()
song.play()
while True:
    clock.tick(60)
pygame.quit()

Далее...

Создание словаря в Python

sozdanie-slovarei-v-python.png

Здравствуй дорогой гость, читатель или подписчик. Сегодня мы поговорим о создании словарей на любимым нами языке Python.

Для наглядного примера, мы с вами создадим англо-русский словарь, индексами в котором будут служить строковые значения. Один из способов создать словарь - начать с пустого словаря и добавлять в него элементы постепенно. Запомните, пустой словарь обозначается фигурными скобками {}:

>>> engToRus = {}
>>> engToRus['one'] = 'odin'
>>> engToRus['two'] = 'dva'

Как вы наверное заметили, первый оператор присваивания создает словарь названный engToRus, остальные операторы добавляют новые элементы в словарь. Мы можем распечатать текущее значение словаря обычным способом:Далее...

Чтение изображения из SQLite

В этой статье, мы собираемся выполнять обратную операцию. Мы будем читать изображение из таблицы базы данных. В прошлой статье мы записали данные изображения в таблицу, теперь мы превратим эти данные обратно в изображение.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def writeImage(data):
    try:
        fout = open('woman2.jpg','wb')
        fout.write(data)
    
    except IOError, e:    
        print "Error %d: %s" % (e.args[0], e.args[1])
        sys.exit(1)
        
    finally:
        if fout:
            fout.close()       
    
try:
    con = lite.connect('test.db')
    cur = con.cursor()    
    cur.execute("SELECT Data FROM Images LIMIT 1")
    data = cur.fetchone()[0]
    writeImage(data)
    
except lite.Error, e:
    print "Error %s:" % e.args[0]
    sys.exit(1)
    
finally:
    if con:
        con.close()

Далее...

Загрузка изображения в базу данных SQLite

Загрузка изображения в базу данных SQLite

В этой статье, мы собираемся вставить данные изображения в базу данных SQLite. Следует отметить, что некоторые программисты выступают против помещения изображений в базы данных. Здесь мы только покажем, как делать это. Мы не станем останавливаться на технических проблемах того, сохранять ли изображения в базах данных или нет. Это применяется в зависимости от ситуации, когда эффективнее сохранять в базе чем в файлах.

sqlite> CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);

Для этого примера, мы создаём новую таблицу, называемую Images. Для изображений мы используем тип данных BLOB, который расшифровывается как Binary Large Objects.

Далее...

Запросы с параметрами в SQLite [Часть 4]

16 августа 2015 г. Archy SQLite Обсудить

Запросы с параметрами в SQLite

Сейчас мы научимся работать с параметрами при создании запроса. Когда мы используем параметризованные запросы, мы используем местозаполнители вместо прямого написания значений в SQL запросе. Запросы с указанием параметров отдельно увеличивают безопасность и производительность.

Python модуль sqlite3 поддерживает два типа заполнителей: знаки вопроса и именованные заполнители.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
uId = 1
uPrice = 62300 
 
con = lite.connect('test.db')
with con:
    cur = con.cursor()    
    cur.execute("UPDATE Cars SET Price=? WHERE Id=?", (uPrice, uId))        
    con.commit()
    print "Number of rows updated: %d" % cur.rowcount

Мы обновляем цену одной машины. В этом примере кода, мы используем заполнители типа «знак вопроса».

Далее...

Вывод данных из таблицы SQLite [Часть 3]

Вывод данных из таблицы SQLite

В предыдущей статьи [часть 2] мы рассмотрели моменты создания таблицы в базу данных и внесения данных в эту таблицу. В данной статье покажем пример как получить данные из таблицы.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:    
    cur = con.cursor()    
    cur.execute("SELECT * FROM Cars")
    rows = cur.fetchall()
 
    for row in rows:
        print row

В этом примере, мы извлекаем все данные из таблицы Cars.

Далее...