
Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.
У цій статті зібрані зручні прийоми, які цілком можуть спростити життя усім 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')] >>> list (enumerate ('abc', 1)) [(1, 'a')]
Абстракція словників/великих кількостей
З абстракціями списків (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 2python - m SimpleHTTPServer# Python 3python3 - 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 pdbpdb.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.tool
Тернарний оператор
Тернарний оператор – це скорочена форма запису умовного вираження if – else. Ось приклад використання :
[on_true] if [expression] else [on_false]x, y = 50, 25small = x if x < y else y
Якщо ви знаєте інші корисні прийоми, ділиться ними в коментарях!
Переклад статті “Nifty Python tricks”
Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?