Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Хитрые Приёмы На Python

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,071
Баллы
155
Возраст
51
В этой статье собраны удобные приёмы, которые вполне могут упростить жизнь всем Python-программистам. Итак, не будем терять времени.

Перечисление


Вместо этого:

i = 0
for item in iterable:
print i, item
i += 1

Можно сделать так:

for i, item in enumerate(iterable):
print i, item

В enumerate можно передавать и второй аргумент. Вот пример:

>>> list(enumerate('abc'))
[(0, 'a'), (1, 'b'), (2, 'c')]

>>> list(enumerate('abc', 1))
[(1, 'a'), (2, 'b'), (3, 'c')]

Абстракция словарей/множеств


С

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

(list comprehension) вы скорее всего сталкивались, но вот с абстракциями словарей/множеств (dict/set comprehension) — вряд ли. Они просты в использовании и так же эффективны. Вот пример:

my_dict = {i: i * i for i in xrange(100)}
my_set = {i * 15 for i in xrange(100)}

# Отличие только в двоеточии.

Деление с плавающей запятой


При делении целых чисел в Python результат будет целым, даже если на самом деле он был дробным. Чтобы получить корректный ответ, приходится делать что-то подобное:

result = 1.0/2

Но у этой проблемы есть и другое решение:

>>> from __future__ import division
>>> result = 1/2
>>> print(result)
0.5

Вуаля! И не нужно дописывать .0. Стоит отметить, что этот приём относится только к Python 2 — в третьей версии языка всё работает как нужно по умолчанию.

Простой сервер


Если нужно быстро и легко расшарить файлы из директории, то вот простой способ:

# Python 2
python -m SimpleHTTPServer

# Python 3
python3 -m http.server

Эта команда запустит сервер.

Вычисление выражений Python


Вы наверняка знакомы с eval, но знаете ли вы о literal_eval? Вряд ли. Для безопасного исполнения выражений, содержащих исключительно литералы, вы можете делать так:

import ast
expr = "[1, 2, 3]"
my_list = ast.literal_eval(expr)

А не так:

expr = "[1, 2, 3]"
my_list = eval(expr)

Между прочим, эта фича находится в языке уже давно.

Профилирование скрипта


Вы можете с лёгкостью профилировать скрипт, запустив его следующей командой:

python -m cProfile my_script.py

Интроспекция объектов


Вы можете изучать объекты Python при помощи команды dir(). Простой пример:

>>> foo = [1, 2, 3, 4]
>>> dir(foo)
['__add__', '__class__', '__contains__',
'__delattr__', '__delitem__', '__delslice__', ... ,
'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']

Отладочные скрипты


Вы можете задавать точки останова (breakpoint) при помощи модуля pdb:

import pdb
pdb.set_trace()

Чтобы задать точку останова в любом месте скрипта, напишите там команду pdb.set_trace(). В pdb есть ещё несколько интересных штучек, описанных в

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.

Упрощение конструкций с if


Если вам нужно проверить несколько значений, сделайте так:

if n in [1,4,5,6]:

А не так:

if n==1 or n==4 or n==5 or n==6:

Разворачивание списка/строки


Быстро развернуть список можно следующим образом:

>>> a = [1,2,3,4]
>>> a[::-1]
[4, 3, 2, 1]

# Это создаёт новый развёрнутый список.
# Развернуть имеющий список:

a.reverse()

То же самое можно сделать и со строкой:

>>> foo = "yasoob"
>>> foo[::-1]
'boosay'

Красивый вывод


Вы можете красиво выводить на экран словари и списки вот так:

from pprint import pprint
pprint(my_dict)

Нагляднее это, конечно, при работе со словарями. Кроме того, так же можно выводить информацию из JSON-файлов:

cat file.json | python -m json.tools

Тернарный оператор


Тернарный оператор — это сокращённая форма записи условного выражения if-else. Вот пример использования:

[on_true] if [expression] else [on_false]
x, y = 50, 25
small = x if x < y else y

Если вы знаете другие полезные приёмы, делитесь ими в комментариях!


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
 
Вверх