Простой Python — страница 56 из 66

xlrd······················0.9.3····················py34_0

xlsxwriter················0.5.5····················py34_0

yaml······················0.1.4·························1

zeromq····················4.0.4·························0

zlib······················1.2.7·························1

Установка и использование pip и virtualenv

Пакет pip — это самый популярный способ установить сторонние (нестандартные) пакеты Python. Несколько раздражает то, что такой полезный инструмент не являлся частью стандартного Python и его приходилось загружать и устанавливать самостоятельно. Как говорил мой друг, это жестокий, пугающий ритуал. Хорошая новость заключается в том, что, начиная с версии 3.4, pip является стандартной частью Python.

Вместе с pip часто используется программа virtualenv — это способ установить пакеты Python в заданный каталог, чтобы избежать взаимодействий с уже существующими пакетами Python. Это позволяет вам использовать любые Python-функции, даже если у вас нет разрешения изменять текущую установленную версию.

Если у вас установлен Python 3, но под рукой только версия pip для Python 2, получить версию для Python 3 под Linux или OS X можно следующим способом:

$ curl — O http://python-distribute.org/distribute_setup.py

$ sudo python3 distribute_setup.py

$ curl — O https://raw.github.com/pypa/pip/master/contrib/get-pip.py

$ sudo python3 get-pip.py

Это установит pip-3.3 в каталог bin вашей версии Python 3. Далее для установки сторонних пакетов вы можете использовать pip-3.3 вместо версии для Python 2.

Вот несколько хороших руководств по pip и virtualenv:

• http://bit.ly/jm-pip-vlenv;

• http://bit.ly/hhgp-pip.

Установка и использование conda

До недавнего момента pip всегда загружал файлы исходных кодов, а не бинарные файлы. Это могло стать проблемой для модулей Python, которые построены на основе библиотек С. Недавно разработчики Anaconda создали conda (http://www.continuum.io/blog/conda), для того чтобы решить эту проблему. pip — это менеджер пакетов для Python, а conda работает с любыми языками программирования и ПО. conda также не нуждается в чем-то вроде virtualenv для того, чтобы содержать отдельно разные пакеты.

Если вы установили дистрибутив Anaconda, у вас уже есть программа conda. Если нет, можете установить Python 3 и conda со страницы http://conda.pydata.org/miniconda.html. Как и в случае с Anaconda, убедитесь, что файл, который вы загружаете, начинается с Miniconda3, а не с Miniconda — это версия для Python 2.

conda работает вместе с pip. Несмотря на то что он имеет собственный публичный репозиторий пакетов (http://binstar.org/), команды вроде conda search также выполнят поиск в репозитории PyPI (http://pypi.python.org/). Если у вас возникают проблемы с pip, conda может стать хорошей альтернативой.

Приложение Д. Ответы к упражнениям

Глава 1. Python: с чем его едят

1. Если вы еще не установили Python 3, сделайте это сейчас. Прочтите приложение Г, чтобы узнать детали.

2. Запустите интерактивный интерпретатор Python 3. И вновь детали вы найдете в приложении Г. Интерпретатор должен вывести несколько строк о себе, а затем строку, начинающуюся с символов >>>. Перед вами приглашение для ввода команд Python.

Вот так это выглядит на моем MacBook Pro:

$ python

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 01:25:11)

[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>

3. Немного поэкспериментируйте с интерпретатором. Используйте его как калькулятор и наберите текст 8 * 9. Нажмите клавишу Enter, чтобы увидеть результат. Python должен вывести 72:

>>> 8 * 9

72

4. Теперь введите число 47 и нажмите Enter. Появилось ли число 47 в следующей строке?

>>> 47

47

5. Теперь введите print(47) и нажмите клавишу Enter. Появилось ли снова число 47 в следующей строке?

>>> print(47)

47

Глава 2. Ингредиенты Python: числа, строки и переменные

1. Сколько секунд содержится в часе? Используйте интерактивный интерпретатор как калькулятор и умножьте количество секунд в минуте (60) на количество минут в часе (тоже 60):

>>> 60 * 60

3600

2. Присвойте результат вычисления предыдущего задания (секунды в часе) переменной, которая называется seconds_per_hour:

>>> seconds_per_hour = 60 * 60

>>> seconds_per_hour

3600

3. Сколько секунд содержится в сутках? Используйте переменную seconds_per_hour:

>>> seconds_per_hour * 24

86400

4. Снова посчитайте количество секунд в сутках, но на этот раз сохраните результат в переменной seconds_per_day:

>>> seconds_per_day = seconds_per_hour * 24

>>> seconds_per_day

86400

5. Разделите значение переменной seconds_per_day на значение переменной seconds_per_hour. Используйте деление с плавающей точкой (/):

>>> seconds_per_day / seconds_per_hour

24.0

6. Разделите значение переменной seconds_per_day на значение переменной seconds_per_hour. Используйте целочисленное деление (//). Совпадает ли полученный результат с ответом на предыдущее упражнение, если не учитывать символы.0 в конце?

>>> seconds_per_day // seconds_per_hour

24

Глава 3. Наполнение Python: списки, кортежи, словари и множества

1. Создайте список, который называется years_list, содержащий год, в который вы родились, и каждый последующий год вплоть до вашего пятого дня рождения. Например, если вы родились в 1980 году, список будет выглядеть так: years_list = [1980, 1981, 1982, 1983, 1984, 1985].

Если вы родились в 1980, вам нужно ввести следующее:

>>> years_list = [1980, 1981, 1982, 1983, 1984, 1985]

2. В какой из годов, содержащихся в списке years_list, был ваш третий день рождения? Помните, в первый год вам было 0 лет.

Вам нужно смещение 3. Поэтому, если вы родились в 1980-м:

>>> years_list[3]

1983

3. В какой из годов, содержащихся в списке years_list, вам было больше всего лет?

Вам нужно получить последний год, поэтому используйте смещение -1. Вы также можете использовать смещение 5, поскольку знаете, что в этом списке всего шесть элементов. Однако смещение -1 позволяет получить последний элемент из списка любой длины. Для тех, кто родился в 1980 году:

>>> years_list[-1]

1985

4. Создайте список things, содержащий три элемента: "mozzarella", "cinderella", "salmonella":

>>> things = ["mozzarella", "cinderella", "salmonella"]

>>> things

['mozzarella', 'cinderella', 'salmonella']

5. Напишите с большой буквы тот элемент списка things, который относится к человеку, а затем выведите список. Изменился ли элемент списка?

Эта строка записывает слово с прописной буквы, но не меняет его в списке:

>>> things[1].capitalize()

'Cinderella'

>>> things

['mozzarella', 'cinderella', 'salmonella']

Если вы хотите изменить его в списке, вам нужно присвоить его снова:

>>> things[1] = things[1].capitalize()

>>> things

['mozzarella', 'Cinderella', 'salmonella']

6. Переведите сырный элемент списка things в верхний регистр целиком и выведите список:

>>> things[0] = things[0].upper()

>>> things

['MOZZARELLA', 'Cinderella', 'salmonella']

7. Удалите болезнь из списка things, получите Нобелевскую премию и затем выведите список на экран.