Archy
Косвенный вызов функций в Python
Так как функции в языке Python являются объектами, можно написать такую программу, которая будет работать с ними, как с обычными объектами. Объекты функции могут присваиваться, передаться другим функциям, сохраняться в структурах данных и так далее, как если бы они были простыми числами или строками.
Кроме того, объекты функций поддерживают специальные операции: они могут вызываться перечислением аргументов в круглых скобках, следующих сразу же за выражением функции. И тем не менее, функции принадлежат к категории обычных объектов.
Мы встречали уже такие способы использования функций в более ранних примерах, тем не менее краткий обзор поможет нам лучше понять модель объектов.Далее...
Здравствуй дорогой читатель! Как гласит пословица, одна картинка стоит тысячи слов. В нашем случае, стоимость одной картинке дойдет до несколько десятков строк кода. Встает вопрос, для чего вообще нужно делать скриншоты сайтов?
Тут ответы варьируют от человека к человеку, мне вот нужен был скрипт который раз в неделю сделает скриншот главной странице сайта. Вслед чего, последние две картинки сравнивались побайтно. В случае эквивалентности, скрипт прекратил работу в течение недели после чего снова картинки N и N-1 приступили к сравниванию. В случае когда байты картинок различались, скрипт автоматически запустил другой скрипт, в моем случае был (парсер or граббер or скраппер), тут на ваше усмотрение.
И так, для установки QtWebKit придется немного попотеть. Бывалые программисты/сисадмины сделают это одной левой. Тут pip3 и easy_install не катит, нужно установить бинарные пакеты.Далее...
Чтобы обобщить различия между методами __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
Назначение предложения else в инструкции try на первый взгляд не всегда очевидно для тех, кто только начинает осваивать язык программирования Python.
Тем не менее, без этого предложения нет никакого другого способа узнать(не устанавливая и не проверяя флаги) - выполнение программы продолжилось потому, что исключение в блоке try не было возбуждено, или потому, что исключение было перехвачено и обработано.
Пример:
try:
# Выполняемый код
except:
# Обработка исключения
# Программа оказалась здесь потому, что исключение было обработано
# или потому, что его не возникло?
Точно так же, как инструкция else в операторах цикла делает причину выхода из цикла более очевидной, предложение else в инструкции try однозначно и очевидно сообщает о произошедшем:Далее...
В данной статье мы покажем как можно воспроизвести аудио файлы в разных библиотеках на 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.
Для наглядного примера, мы с вами создадим англо-русский словарь, индексами в котором будут служить строковые значения. Один из способов создать словарь - начать с пустого словаря и добавлять в него элементы постепенно. Запомните, пустой словарь обозначается фигурными скобками {}:
>>> engToRus = {}
>>> engToRus['one'] = 'odin'
>>> engToRus['two'] = 'dva'
Как вы наверное заметили, первый оператор присваивания создает словарь названный engToRus, остальные операторы добавляют новые элементы в словарь. Мы можем распечатать текущее значение словаря обычным способом:Далее...
В этой статье, мы собираемся выполнять обратную операцию. Мы будем читать изображение из таблицы базы данных. В прошлой статье мы записали данные изображения в таблицу, теперь мы превратим эти данные обратно в изображение.
#!/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> CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);
Для этого примера, мы создаём новую таблицу, называемую Images. Для изображений мы используем тип данных BLOB, который расшифровывается как Binary Large Objects.
Сейчас мы научимся работать с параметрами при создании запроса. Когда мы используем параметризованные запросы, мы используем местозаполнители вместо прямого написания значений в 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
Мы обновляем цену одной машины. В этом примере кода, мы используем заполнители типа «знак вопроса».
В предыдущей статьи [часть 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.
Возникли вопросы по Python?
- Python для начинающих 71
- Python и запуск програм 16
- SQLite 12
- Веб-программирование 7
- Взаимодействие с Интернетом 401
- Видео уроки 7
- Запуск программ на Python 4
- Изучение PyQt5 12
- Изучение wxPython 1
- Модули 8
- Обработка исключений 3
- Общие вопросы 190
- ООП на Python 12
- Примеры Python 30
- Работа с изображениями 4
- Разработка интернет-приложений 8
- Как использовать proxy с помощью библиотеки Requests?
- Как работают функции в Python?
- Топ наиболее востребованных языков программирования
- Изучение языка программирования Python с помощью Brain Up!
- Распаковка последовательности в отдельные переменные
- Создание своего веб-фреймворка на Python - Часть 1
- Какая версия Python самая быстрая?