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

10 мощных встроенных функций из стандартной библиотеки Python

Фото, разделите на ноль на Unsplash Есть тонна потрясающих пакетов, доступных в Python Ecos … Помечено Python, программирование.

Фото, разделите на ноль на Unsplash

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

Примечание: этот учебник использует синтаксис Python 3.7+

Все глобально доступные функции

# 1 – перечислять

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

abcs = list('ABCDEF')

# Without enumerate
k = 0
for letter in abcs:
    print(k, letter.lower())  # => 0 a, 1 b ...
    k += 1

# With enumerate
for k, letter in enumerate(abcs): 
    print(k, letter.lower())  # => 0 a, 1 b ...

Путь перечислять Работы – возвращение перечисления объекта с __Next__ Метод, который возвращает кортеж (счет, значение) . Вы даже можете использовать разрушительную возможность перечислить более сложные значения.

abcs = [('a', 'A'), ('b', 'B'), ('c', 'C')]

for k, (lower, upper) in enumerate(abcs):
    print(k, lower, upper)  # => 0 a A, 1 b B ...

# 2 – zip

Zip Функция полезна, когда вы хотите объединить несколько повторных файлов вместе. Общим использованием является корпус по сравнению с двумя списками одновременно без прямой индексации.

ABCs = list('ABCDEF')
abcs = list('abcdef')

# Without zip
for upper in ABCs:
    idx = ABCs.index(upper)
    print(upper, abcs[idx])  # => A a, B b ...

# With zip
for upper, lower in zip(ABCs, abcs):
    print(upper, lower)  # => A a, B b ...

Удаление ручной индексации делает код проще понять, потому что он удаляет шаг мышления о том, что соответствует индекс. Если вы себя чувствуете, вы можете комбинировать перечислять с Zip потому что перечислять Не заботится о том, что он получает.

for k, (upper, lower) in enumerate(zip(ABCs, abcs)):
    print(k, upper, lower)  # => 0 A a, 1 B b ...

# 3 – карта

карта Функция мощна в его общности, и понимание того, что она может помочь вам ускорить вычисления с Многопроцессор Отказ Концептуально, карта Применяет заданную функцию каждому элементу в итоге и возвращает результаты в порядке. Мы можем использовать лямбда Чтобы быстро создать функцию f (x) (x ** 2 - 4 * x) и сопоставить его на некоторые значения х Отказ

func = lambda x: abs(x ** 2 - 4 * x)
xs = range(10)

# Without map
results = [func(x) for x in xs]
print(results)  # => [0, 3, 4, 3, ...]

# With map
results = list(map(func, xs))
print(results)  # => [0, 3, 4, 3, ...]

С карта ясно, что мы пытаемся подать заявку функция все XS. Но не указав именно, как это сделать. Например, Если XS Были большой вектор, мы могли бы ускорить этот вычислений, используя аналогичные карта Метод на Многопроцессор. Бассейн объект.

from multiprocessing import Pool, cpu_count

def func(x): 
    return abs(x ** 2 - 4 * x)

xs = range(1_000_000)
with Pool(cpu_count()) as pool:
    results = pool.map(func, xs)
print(len(results))  # => 1000000

Обратите внимание, что мы используем с Ключевое слово для создания контекста для управления ресурсами для пула обработки. cpu_count Функция вернет количество сердечников, доступных на машине, а Pool.map будет применяться ФУНК на товары в XS в параллели. Это показывает, что карта Также предоставляет полезный синтаксис для экспрессии одной программы, несколько данных (SPMD) вычислений.

# 4 – Дир

Dir Функция полезна для выполнения самоанализ на объектах Python (чтобы увидеть, какие у них есть атрибуты). Например, мы можем использовать Dir чтобы увидеть, что определено в ОС модуль.

import os
print(dir(os))  # => ['CLD_CONTINUED', 'CLD_DUMPED', ...]

Мы также можем использовать Dir наблюдать за Специальные методы Это лежит в основе модели данных Python.

print(dir(list('ABCDEF')))  # => ['__add__', '__class__', ...]

Мы можем не только увидеть такие методы, как присоединиться к и Сортировать В нашем списке, но мы также можем увидеть __er____ Метод, который возвращает объект итератора при выношении.

Строковый модуль

# 5 – String.Ascii_uppercas

Строка Модуль содержит полезные константы, которые могут сэкономить вам некоторые набрав. Например, если вам когда-нибудь понадобятся все буквы английского алфавита, вы можете использовать String.Ascii_lowercase или String.Ascii_upperCase Отказ

import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)

Лично я использовал String.Ascii_upperCase При работе с 384-луночными пластинами, имеющими нужные имена из «A1» до «P24»

Модуль iTertools

Как следует из названия, Itertools Модуль содержит утилиты для работы с iTerables. Эти итераторы строительные блоки не только обеспечивают эффективность памяти через ленивое исполнение, но они также обеспечивают чистый синтаксис для нескольких общих преобразований.

# 6 – Itertools.cycle

Itertools.cycle Функция принимает итератор и возвращает итератор, который будет бесконечным циклом через исходные входные значения.

import numpy as np
import matplotlib.pyplot as plt
from itertools import cycle

n_lines = 10
n_pts = 10
styles = [ 'k-', 'b--', 'r-', 'g--' ]

plt.figure()
for k, style in zip(range(n_lines), cycle(styles)):
    x = np.arange(n_pts)
    y = np.sqrt(x) + np.random.rand(n_pts)
    plt.plot(x, y, style, label=f'Line {k}: {style}')
plt.legend()
plt.show()

Как видите, это может быть полезно для езды на велосипеде через стили построения, где громоздкий, чтобы указать тонну стилей и в порядке, чтобы повторить некоторые. Обратите внимание, что цикл был использован внутри Zip поэтому велосипедные стили итераторы не выработали, хотя Лен (стили) Отказ

# 7 – Itertools.product

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

import string
from itertools import product

row_names = string.ascii_uppercase[:16]
col_names = range(1, 25)

wells = list(product(row_names, col_names))
print(wells)  # => [('A', 1), ('A', 2), ...]

Здесь мы получаем список 384 кортежей (16 рядов * 24 столбцов), который цикл, как одометр через входные файлы.

Модуль Functools

functools Модуль содержит функции, которые действуют на другие функции. Вы можете найти много отличных функциональных программных коммунальных услуг здесь.

# 8 – Functools.partial

functools.partial Функция позволяет нам Карри Функция, которая означает указать определенные аргументы в качестве фиксированных значений заранее. Carrying Функция возвращает новую функцию, которая требует меньше аргументов.

from functools import partial

# f takes 2 arguments
def f(x, y):
    return abs(x ** 2 - 4 * y)

# g takes 1 argument
g = partial(f, y=0)

print(g(4))  # => 16

Это будет печатать 16 потому что g (x) (x, (x ** 2) . Это особенно полезно при работе с функциями более высокого порядка, которые предполагают определенную подпись для функции ввода (т. Е. Использование Pool.map для многопроцессора)

Полезные модули IO

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

# 9 – JSON

JSON Модуль предоставляет встроенный интерфейс для чтения и записи данных JSON.

import json

data = {
    'name': 'Bia',
    'color': 'Black',
    'breed': 'Labrador mix'
}

with open('data.json', 'w') as fd:
    json.dump(data, fd)  # => data.json JSON file created

with open('data.json', 'r') as fd:
    data_json = json.load(fd)

print(data_json)  # => {'name': 'Bia', ...}

Это особенно полезно при работе с данными из Интернета, выполняя свой собственный соскоб или работа с другими языками, которые хорошо работают с JSON.

# 10 – Парил

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

import pickle

model = {
    'method': 'logistic',
    'weights': [-0.34, 0.45, 0.72, -1.21]
}

with open('model.pkl', 'wb') as fd:
    pickle.dump(model, fd, pickle.HIGHEST_PROTOCOL)  # => model.pkl created

with open('model.pkl', 'rb') as fd:
    model_pkl = pickle.load(fd)

print(model_pkl)  # => {'method': 'logistic', ...}

Этот корпус использования является общим в приложениях машин, где модели являются объектами Python, а веса являются внутренним состоянием, которое необходимо сохранить.

Последние мысли

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

Оригинал: “https://dev.to/jmswaney/10-powerful-built-in-functions-from-the-python-standard-library-1116”