Хитрі прийоми на Python


Дізнайтесь більше про нові кар'єрні можливості в 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?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *