Python — один из самых популярных и популярных языков программирования в мире. Существует много причин для этого:
- его легко выучить
- это супер универсальный
- Он имеет множество модулей и библиотек
Как специалист по данным, ежедневное использование Python является частью моей внутренней работы. В процессе я приобрел некоторые полезные навыки и идеи.
Здесь я пытаюсь поделиться некоторыми из них в порядке от А до Я.
Большинство из этих «трюков» я использую в своей повседневной работе или натыкаюсь на них. некоторые я просматриваюДокументация по стандартной библиотеке Pythonнашел. Другие черезPyPiискал.
Однако следует отдать должное - я вawesome-python.comЧетыре или пять из них были найдены. Это тщательно подобранный список сотен интересных инструментов и модулей Python. Стоит просмотреть для вдохновения!
all or any
Одна из причин, по которой Python является таким популярным языком программирования, заключается в его удобочитаемости и выразительности.
Люди часто шутят, что Python — это «исполняемый псевдокод'. Но трудно спорить, когда можно написать такой код:
x = [True, True, False]
if any(x):
print("At least one True")
if all(x):
print("Not one False")
if any(x) and not all(x):
print("At least one True and one False")bashplotlib
Вы хотите нарисовать график в консоли?
$ pip install bashplotlibВы можете отображать графики в консоли.
collections
В Python есть отличные типы данных по умолчанию, но иногда они ведут себя не так, как вам хотелось бы.
К счастью, стандартная библиотека Python предоставляетмодуль сбора. Это удобное дополнение дает вам больше типов данных.
from collections import OrderedDict, Counter
# Remembers the order the keys are added!
x = OrderedDict(a=1, b=2, c=3)
# Counts the frequency of each character
y = Counter("Hello World!")DIR
Вы когда-нибудь задумывались, как посмотреть на объект Python и узнать, какие у него свойства? Конечно, есть.
Из командной строки:
>>> dir()
>>> dir("Hello World")
>>> dir(dir)Это может быть очень полезной функцией при интерактивном запуске Python и динамическом просмотре объектов и модулей, с которыми вы работаете.
это здесьчитать далее.
эмодзи
Да,настоящий.
$ pip install emoji
from emoji import emojize
print(emojize(":thumbs_up:"))from __future__ import
Одним из следствий популярности Python является то, что постоянно разрабатываются новые версии. Новая версия означает новые функции, если только ваша версия не устарела.
Но не бойтесь. Должен__будущее__ модуль, что позволит вам импортировать функции из будущих версий Python. На самом деле это похоже на путешествие во времени, магию или что-то в этом роде.
from __future__ import print_function
print("Hello World!")почему бы тебе не пойтиимпортировать фигурные скобки?
geopy
Геолокация может быть сложной областью для программистов (ха, каламбур!). номодуль геопоискаСделать это действительно легко.
pip install geopyОн работает, абстрагируя API для множества различных сервисов геокодирования. Это позволяет вам получить полный почтовый адрес, широту, долготу и даже высоту над уровнем моря.
Существует также полезный дистанционный класс. Он вычисляет расстояние между двумя точками в ваших любимых единицах измерения.
from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)howdoi
Возникли проблемы с кодированием и вы забыли решение, которое видели раньше? Нужно проверить StackOverflow, но не хотите выходить из терминала?
тогда вам нужноЭтот полезный инструмент командной строки.
$ pip install howdoiЗадавайте свои вопросы, и он постарается на них ответить.
$ howdoi vertical align css
$ howdoi for java in java
$ howdoi undo commits in gitПримечание. Он удаляет код из верхнего ответа на StackOverflow. Он не всегда может предоставить самую полезную информацию...
$ howdoi退出vimосматривать осматривать
Питонпроверить модульОтлично подходит для понимания того, что происходит за кулисами. Вы даже можете сами вызывать его методы!
Пример кода нижеinspect.getsource()Для печати собственного исходного кода. это такжеinspect.getmodule()Используется для печати модуля, который его определяет.
Последняя строка кода выводит собственный номер строки.
import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)Конечно, помимо этих тривиальных применений, проверка модулей очень полезна для понимания того, что делает код. Вы также можете использовать его для написания самодокументирующегося кода.
Jedi
Библиотека Jedi — это библиотека для помощи при кодировании и анализа кода. Это позволяет писать код быстрее и эффективнее.
Если вы не разрабатываете собственную IDE, вас, вероятно, больше всего интересуетИспользуйте Jedi в качестве плагина для редактора. К счастью, он уже доступен!
Однако, возможно, вы уже используете Jedi. Проект IPython использует Jedi для автодополнения кода.
** kwargs
При изучении любого языка есть много вех на этом пути. Использование Python, понимание тайн**kwargsГрамматика может считаться одним.
Двойная звездочка перед объектом словаря позволяет использовать содержимое словаря какИменованные аргументы, передаваемые в функции.
Ключи словаря — это имена параметров, а значения — значения, переданные в функцию. Вам даже не нужно называть это kwargs!
dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
print(a + b)
return
# these do the same thing:
someFunction(**dictionary)
someFunction(a=1, b=2)Это полезно, когда вы хотите написать функции, которые могут обрабатывать именованные параметры, которые не определены заранее.
List comprehensions
Одна из моих любимых вещей в программировании на Python — этопонимание списка.
Эти выражения позволяют легко писать очень чистый код, почти как на естественном языке.
ты сможешьздесьУзнайте больше о том, как их использовать.
numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = ['London', 'Dublin', 'Oslo']
def visit(city):
print("Welcome to "+city)
for city in cities:
visit(city)map
Python поддерживает функциональное программирование со многими встроенными функциями. Наиболее полезными из них являютсяmap()функции, особенно слямбда-функцияВ сочетании с.
x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
# prints out [2,3,4]
print(list(y))В приведенном выше примереmap()Примените простую лямбда-функцию к каждому элементуx. Он возвращает объект карты, который можно преобразовать в какой-либо итерируемый объект, например список или кортеж.
newspaper3k
Если вы этого не видели, будьте готовы позволить своему разуму бытьВ шоке от газетного модуля Python.
Он позволяет получать новостные статьи и связанные с ними метаданные из ряда ведущих международных изданий. Вы можете получить изображения, текст и имена авторов.
у него даже есть некоторыеВстроенные возможности НЛП.
Так что, если вы подумываете об использовании BeautifulSoup или другой библиотеки веб-краулера DIY для своего следующего проекта, сэкономьте свое время и усилия и вместо этого используйте `$ pip installгазета3k.
Перегрузка оператора Перегрузка оператора
Python предоставляетоператор перегруженПоддержка, это один из тех терминов, который заставляет вас звучать как законный ученый-компьютерщик.
На самом деле это простая концепция. Вы когда-нибудь задумывались, почему Python позволяет вам использовать+оператор для добавления чисел, а также для объединения строк? Это перегрузка оператора на работе.
Вы можете определять объекты, использующие стандартную нотацию операторов Python, по-своему. Это позволяет вам использовать их в контексте объекта, с которым вы работаете.
class Thing:
def __init__(self, value):
self.__value = value
def __gt__(self, other):
return self.__value > other.__value
def __lt__(self, other):
return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothingpprint
Python по умолчаниюprintФункция выполняет свою работу. Но при попытке распечатать любой большой вложенный объект результат получается довольно уродливым.
ЭтоМодуль красивой печати стандартной библиотекиМесто для игры. Он распечатывает сложные структурированные объекты в удобном для чтения формате.
Обязателен для любого разработчика Python, работающего с нетрадиционными структурами данных.
import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)очередь очередь
Python поддерживает многопоточность, чему способствует модуль очереди из стандартной библиотеки.
Этот модуль позволяет реализовать структуры данных очереди. Это структуры данных, которые позволяют добавлять и извлекать записи в соответствии с определенными правилами.
Очередь «первым поступил — первым обслужен» (или FIFO) позволяет извлекать объекты в том порядке, в котором они были добавлены. Очереди «последним пришел, первым вышел» (LIFO) позволяют вам сначала получить доступ к недавно добавленным объектам.
Наконец, приоритетные очереди позволяют извлекать объекты в соответствии с порядком их сортировки.
это какв Питонеиспользовать очередьЗаймитесь многопоточным программированиемпример.
__repr__
При определении класса или объекта в Python полезно предоставить «официальный» способ представления этого объекта в виде строки. Например:
>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>Это упрощает отладку кода. Добавьте это в определение вашего класса следующим образом:
class someClass:
def __repr__(self):
return "<some description here>"
someInstance = someClass()
# prints <some description here>
print(someInstance)SH
Python — отличный язык сценариев. Использование стандартной операционной системы и библиотек подпроцессов иногда может быть головной болью.
Долженбиблиотека SHПредлагает аккуратную альтернативу.
Он позволяет вам вызывать любую программу, как если бы это была обычная функция — очень полезно для автоматизации рабочих процессов и задач, и все это из Python.
import sh
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')Type hints
Python — это язык с динамической типизацией. При определении переменных, функций, классов и т. д. вам не нужно указывать тип данных.
Это позволяет ускорить время разработки. Однако есть некоторые вещи, которые раздражают больше, чем ошибки времени выполнения, вызванные простыми проблемами ввода.
Начиная с Python 3.5, вы можете дополнительно предоставить подсказки типа при определении функций.
def addTwo(x : Int) -> Int:
return x + 2Вы также можете определить псевдонимы типов:
from typing import List
Vector = List[float]
Matrix = List[Vector]
def addMatrix(a : Matrix, b : Matrix) -> Matrix:
result = []
for i,row in enumerate(a):
result_row =[]
for j, col in enumerate(row):
result_row += [a[i][j] + b[i][j]]
result += [result_row]
return result
x = [[1.0, 0.0], [0.0, 1.0]]
y = [[2.0, 1.0], [0.0, -2.0]]
z = addMatrix(x, y)Хотя это и не обязательно, аннотации типов могут сделать ваш код более понятным.
Они также позволяют вам использовать инструменты проверки типов для обнаружения этих случайных ошибок TypeError во время выполнения. Если вы работаете над большим сложным проектом, возможно, оно того стоит!
uuid
Быстрый и простой способ создания универсального уникального идентификатора (или «UUID») — черезМодуль uuid стандартной библиотеки Python..
import uuid
user_id = uuid.uuid4()
print(user_id)Это создает случайное 128-битное число, которое почти наверняка уникально.
На самом деле существует более 2 12 2 возможных UUID, которые могут быть сгенерированы. Это более полумиллиарда миллиардов (или 5 000 000 000 000 000 000 000 000 000 000 000 000 000).
Вероятность найти дубликат в заданном наборе очень мала. Даже с триллионом UUID вероятность того, что существует дубликат, намного меньше, чем один на миллиард.
Две строчки кода — это хорошо.
Virtual environments
Это, наверное, мое любимое место для Python.
Возможно, вы одновременно работаете над несколькими проектами Python. К сожалению, иногда два проекта зависят от разных версий одной и той же зависимости. Какие из них установлены в вашей системе?
К счастью, Питондля виртуальной средыизслужба поддержкиДает вам лучшее из обоих миров. Из командной строки:
python -m venv my-project
source my-project/bin/activate
pip install all-the-modulesТеперь вы можете запустить автономную версию и установку Python на одном компьютере.
Википедия Википедия
В Википедии есть отличный API, который позволяет пользователям программно получать доступ к беспрецедентным и совершенно бесплатным знаниям и информации.
существуетМодуль Википедии, что делает доступ к API почти неожиданно удобным.
import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
print(link)Как и настоящий веб-сайт, модуль предлагает поддержку нескольких языков, устранение неоднозначности страниц, поиск случайных страниц и дажеdonate()метод.
XKCD
Юмор — ключевая особенность языка Python — в конце концов, он основан на британских комедийных зарисовках.Летающий цирк Монти Пайтонаназваниеиз. Большая часть официальной документации Python ссылается на самые известные скетчи шоу.
Но юмор не ограничивается документацией. Пожалуйста, запустите следующим образом:
import antigravityНикогда не меняйся, Питон. никогда не меняется.
YAML
YAML означает «YAML Is Not Markup Language'. Это язык форматирования данных и надмножество JSON.
В отличие от JSON, он может хранить более сложные объекты и ссылаться на свои собственные элементы. Вы также можете написать комментарии, которые делают его особенно подходящим для написания файлов конфигурации.
ДолженPyYAML-модульПозволяет использовать Python с использованием YAML. Установить:
$ pip install pyyamlЗатем импортируйте в свой проект:
import yamlPyYAML позволяет хранить объекты Python любого типа данных, а также экземпляры любого определяемого пользователем класса.
сжатие zip
Последний трюк трюка, действительно крутой. Вам когда-нибудь приходилось составлять словарь из двух списков?
keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))Долженzip()Встроенная функция принимает итерацию объектов и возвращает список кортежей. Каждый кортеж группирует элементы входного объекта по позиционному индексу.
Вы также можете позвонить*zip()Они приходят «распаковывать» объекты.
Спасибо за чтение!
Посмотреть оригинальный английский
Общедоступный номер: Galaxy № 1
Контактный адрес электронной почты: public@space-explore.com
(Пожалуйста, не перепечатывайте без разрешения)