Рубрики
Без рубрики

A-Z полезных трюков Python

Автор оригинала: Peter Gleeson.

Python – один из самых популярных в мире языков программирования по требованию. Это по многим причинам:

  • Это легко учиться
  • Это супер универсальный
  • Он имеет огромный ассортимент модулей и библиотек

Я использую Python ежедневно в качестве неотъемлемой части моей работы в качестве ученого данных. По пути я поднял несколько полезных трюков и советов.

Здесь я поделился некоторыми из них в формате A-Z.

Большинство из этих «трюков» – это то, что я использовал или наткнулся во время своей повседневной работы. Некоторые я нашел во время просмотра Python Standard Библиотека Документы Отказ Несколько других я нашел поиск через Pypi Отказ

Тем не менее, кредит, где он должен быть – я обнаружил четыре или пять из них на awesome-python.com Отказ Это подверенный список сотен интересных инструментов и модулей Python. Стоит просмотр вдохновения!

все или любое

Одна из многих причин, по которым 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

Вы можете иметь графики в консоли.

коллекции

У Python есть несколько отличных типов данных по умолчанию, но иногда они просто не будут вести себя так, как вы хотели бы.

К счастью, библиотека Python Standard предлагает Модуль коллекций Отказ Это удобное дополнение предоставляет вам дополнительные данные типов.

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!")

дир

Вы когда-нибудь задавались вопросом, как вы можете заглянуть в объект Python и посмотреть, какие атрибуты это имеет? Конечно, у вас есть.

Из командной строки:

>>> dir()
>>> dir("Hello World")
>>> dir(dir)

Это может быть действительно полезной функцией при запуске Python Interactive и для динамически изучения объектов и модулей, с которыми вы работаете.

Читать дальше здесь Отказ

emoji.

Да, Действительно Отказ

$ pip install emoji

Не притворяйся, что ты не будешь пробовать это …

from emoji import emojize
print(emojize(":thumbs_up:"))

?

от __future__ импорт

Одним из следствий популярности Питона является то, что всегда есть новые версии. Новые версии означают новые функции – если ваша версия не устарела.

Страх не, однако. __future__ модуль Позволяет импортировать функциональные возможности из будущих версий Python. Это буквально как время путешествия, или магия или что-то.

from __future__ import print_function
print("Hello World!")

Почему бы не пойти Импорт фигурных скобок ?

Геопия

География может быть сложной местностью для программистов для навигации (ха, каламбур!). Но Модуль геопии делает его разнаррительно легко.

$ pip install geopy

Он работает путем абстрагирования API ряда различных услуг геокодирования. Это позволяет получить полный уличный адрес города, широта, долготу и даже высоты.

Есть также полезный класс расстояния. Он рассчитывает расстояние между двумя местоположениями в вашей любимой единице измерения.

from geopy import GoogleV3

place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)

как мне

Застрял в проблеме кодирования и не могу вспомнить, что решение, которое вы видели раньше? Нужно проверить Stackoverflow, но не хочу покидать терминал?

Тогда вам нужно Этот полезный инструмент командной строки Отказ

$ pip install howdoi

Спросите это, какой у вас вопрос, и это сделает все возможное, чтобы вернуть ответ.

$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git

Будьте в курсе, хотя – это царапин кода из лучших ответов от Stackoverflow. Это может не всегда дать самую полезную информацию …

$ howdoi exit vim

осмотреть

Python Проверьте модуль отлично подходит для понимания того, что происходит за кулисами. Вы можете даже вызвать свои методы на себя!

Образец кода ниже использует Inspect.getSource () распечатать свой собственный исходный код. Это также использует Inspect.getModule () Для печати модуля, в котором он был определен.

Последняя строка кода печатает свой номер строки.

import inspect

print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)

Конечно, за пределы этих тривиальных применений модуль проверки может оказаться полезным для понимания того, что делает ваш код. Вы также можете использовать его для написания самодоступного кода.

Jedi.

Библиотека Jedi – это библиотека анализа AutoCollection и Code. Это делает написание кода быстрее и более продуктивным.

Если вы не разрабатываете свой собственный IDE, вы, вероятно, больше всего интересуют Использование Jedi в качестве редактора плагин Отказ К счастью, уже доступны грузы!

Вы уже можете использовать Jedi, однако. Проект iPython использует JEDI для его функции автозаполнения кода.

** kwargs.

При изучении любого языка существует много веревших веферов по пути. С Python, понимая таинственный ** kwargs Синтаксис, вероятно, считается как один.

Double Asterisk перед объектом словаря позволяет пройти содержимое этого словаря, как названные аргументы на функцию Отказ

Ключи словаря являются именами аргументов, и значения являются значениями, передаваемыми к функции. Вам даже не нужно называть это кварги !

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)

Это полезно, когда вы хотите написать функции, которые могут обрабатывать с именованными аргументами, не определенными заранее.

Пояснение списка

Одна из моих любимых вещей о программировании в 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)

карта

Python поддерживает функциональное программирование через ряд встроенных функций. Один из самых полезных – карта () Функция – особенно в сочетании с лямбда функции Отказ

x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
# prints out [2,3,4]print(list(y))

В приведенном выше примере карта () Применяет простую ламбда для каждого элемента в х Отказ Он возвращает объект карты, который можно преобразовать в некоторый намек, такой как список или кортеж.

Newspater3k.

Если вы еще этого не видели, то будьте готовы, чтобы у меня разум взорвал Модуль газеты Python Отказ

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

У него даже есть некоторые Встроенная функциональность NLP Отказ

Поэтому, если вы думали использовать BeautifulSoup или какой-либо другой библиотеку WebScraping DIY для вашего следующего проекта, сохраните свое время и усилия, и $ pip Установить газету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 + nothing

преподаватель

По умолчанию Python Печать Функция делает свою работу. Но попробуйте распечатывать любой большой вложенный объект, и результат довольно уродливая.

Вот где Стандартный библиотечный модуль для печати вступает в действие. Это распечатывает сложные структурированные объекты в простой в формате чтения.

Необходимо для любого разработчика Python, который работает с нетривиальными структурами данных.

import requests
import pprint

url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)

Очередь

Python поддерживает многопоточность, и это облегчается модуль очередей стандартной библиотеки.

Этот модуль позволяет реализовать структуры данных очереди данных. Это структуры данных, которые позволяют добавлять и получать записи в соответствии с конкретным правилом.

«Первый в очереди, во-первых,« или FIFO) позволяют вам получить объекты в порядке их добавления. Очередь, в последний раз, First Out (Lifo) позволяют вам получить доступ к последним добавленным объектам.

Наконец, приоритетные очереди позволяют вам получить объекты в соответствии с порядком, в котором они сортируются.

Вот пример того, как использовать очереди Для многопоточного программирования в Python.

__repr__

При определении класса или объекта в Python полезно предоставить «официальный» способ представления этого объекта как строку. Например:

>>> file = open('file.txt', 'r')
>>> print(file)

Это делает код отладки намного проще. Добавьте его в определения вашего класса, как показано ниже:

class someClass:
    def __repr__(self):
        return ""
        
someInstance = someClass()

# prints 
print(someInstance)

штерива

Python делает отличный язык сценариев. Иногда используя стандартные системы OS и подпроцесс, могут быть немного головной болью.

SH Библиотека обеспечивает аккуративную альтернативу.

Он позволяет вам вызвать любую программу, как если бы это была обычная функция – полезна для автоматизации рабочих процессов и задач, все из Python.

import sh
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')

Тип подсказки

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)

Хотя не обязательно, тип аннотации могут облегчить решение вашего кода.

Они также позволяют использовать инструменты для проверки типов, чтобы уловить эти разряды перед выполнением. Наверное, стоит, если вы работаете над большими сложными проектами!

эуид

Быстрый и простой способ генерировать универсальные уникальные идентификаторы (или «UUIDS») через Модуль UUID-модуля библиотеки Python Standard Отказ

import uuid

user_id = uuid.uuid4()
print(user_id)

Это создает рандомизированный 128-битный номер, который почти наверняка будет уникальным.

Фактически, есть более 2¹²² возможных UUID, которые могут быть созданы. Это более пяти без учета заболевания (или 5 000 000 000 000 000 000 000 000 000 000 000 000).

Вероятность поиска дубликатов в данном наборе чрезвычайно низкая. Даже с триллионом UUID, вероятность дубликата существующей значительно, намного меньше, чем один в миллиард.

Довольно хорошо для двух строк кода.

Виртуальные среды

Это, наверное, моя любимая вещь из всех.

Скорее всего, вы работаете над несколькими проектами Python в любое время. К сожалению, иногда два проекта полагаются на разные версии той же зависимости. Что вы устанавливаете на вашу систему?

К счастью, Питона Поддержка виртуальных сред Позволяет вам лучшее из обоих миров. Из командной строки:

python -m venv my-project
source my-project/bin/activate
pip install all-the-modules 

Теперь вы можете иметь автономные версии и установки Python, работающие на одной машине. Сортировка!

Википедия

Wikipedia имеет отличный API, который позволяет пользователям программный доступ к непревзойденному органу совершенно бесплатных знаний и информации.

Модуль Wikipedia Задает доступ к этой API почти смущенно удобным.

import wikipedia

result = wikipedia.page('freeCodeCamp')
print(result.summary)

for link in result.links:
    print(link)

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

XKCD.

Юмор является ключевой особенностью языка Python – в конце концов, он назван в честь британской комедии Sketch Show Monty Python’s Flying Circus Отказ Большая часть официальной документации Python ссылается на самые известные эскизы шоу.

Чувство юмора не ограничивается документами, хотя. Идите на линию ниже:

import antigravity

Никогда не меняйте, питон. Никогда не меняется.

Ямл

Ямл означает « Ямл не разметки языка ‘. Это язык форматирования данных, и является суметом JSON.

В отличие от JSON, он может хранить более сложные объекты и обращаться к своим собственным элементам. Вы также можете написать комментарии, что делает его особенно подходящим для записи файлов конфигурации.

Pyyaml модуль Позволяет использовать YAML с Python. Установите с:

$ pip install pyyaml

А затем импортировать в ваши проекты:

import yaml

Pyyaml позволяет хранить объекты Python любого DataType, а также экземпляры любых пользовательских классов также.

zip.

Одна последняя трюк для Я, и это действительно крутой. Когда-либо нужно было сформировать словарь из двух списков?

keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))

zip () Встроенная функция принимает ряд счетных объектов и возвращает список кортежей. Каждый кортеж группы элементов входных объектов по их позиционному индексу.

Вы также можете «расстевать» объекты, позвонив * zip () на них.

Спасибо за прочтение!

Так что там у вас есть, A-z Python Tricks – надеюсь, вы нашли что-то полезное для вашего следующего проекта.

Python’s Очень разнообразный и хорошо развитый язык, поэтому существует многие особенности, которые у меня нет, в том числе.

Пожалуйста, поделитесь любым из ваших любимых трюков Python, оставив ответ ниже!