24 полезных практических совета по Python

Python
24 полезных практических совета по Python

Эта статья была впервые опубликована в моем публичном аккаунте «Data STUDIO»:24 полезных практических совета по Python

Python — один из самых популярных и популярных языков программирования в мире по многим причинам.

  • легко учить
  • Имеет много функций
  • Он имеет множество модулей и библиотек

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

Здесь я попытаюсь поделиться некоторыми из этих советов в формате, начинающемся с A - Z, и кратко представить эти методы в этой статье, если вы заинтересованы в одном или нескольких из них, вы можете проверить официальную документацию по ссылкам на конец статьи. Надеюсь, это поможет вам.

all or any

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

Люди часто шутят, что Python可执行的伪代码. Когда вы можете написать такой код, с этим трудно спорить.

x = [True, True, False]
if any(x):
    print("至少有一个True")
if all(x):
    print("全是True")
if any(x) and not all(x):
    print("至少一个True和一个False")

bashplotlib

Вы когда-нибудь задумывались о рисовании графики в консоли?

Bashplotlib — это библиотека Python, которая помогает нам отображать данные из командной строки (грубая среда).

# 模块安装
pip install bashplotlib
# 绘制实例
import numpy as np
from bashplotlib.histpgram import plot_hist
arr = np.ramdom.normal(size=1000, loc=0, scale=1)
plot_hist(arr, bincount=50)

collections

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

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

from collections import OrderedDict, Counter
# 记住键的添加顺序!
x = OrderedDict(a=1, b=2, c=3)
# 统计每个字符出现的频率
y = Counter("Hello World!")

dir

Вы когда-нибудь задумывались, как заглянуть внутрь объекта Python и посмотреть, какие у него свойства? В командной строке введите:

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

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

emoji

emojiЭто визуальный эмоциональный символ, используемый в беспроводной связи в Японии. Рисунок относится к изображениям, а текст — к символам. Его можно использовать для обозначения различных выражений, например смайликов для смеха, тортов для еды и т. д. В материковом Китае эмодзи обычно называют «маленькое желтое лицо» или просто эмодзи.

# 安装模块
pip install emoji
# 做个尝试
from emoji import emojize
print(emojize(":thumbs_up:"))

?

from __future__ import

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

Но не волнуйтесь. использовать это__будущее__ модульМожет помочь вам импортировать функции в будущие версии Python. Буквально, это похоже на путешествие во времени, магию или что-то в этом роде.

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

geogy

География — сложная область для большинства программистов. Также много проблем возникает при получении географической информации или составлении карт. этомодуль геопоискаСделайте георелевантный контент очень простым.

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 после возникновения проблемы, а затем вернетесь к терминалу, чтобы продолжить программирование.В это время вы можете не помнить решение, которое вы нашли ранее, и вам нужно заново -проверьте StackOverflow. , но не хотите выходить из терминала, тогда вам нужен этот полезный инструмент командной строкиhowdoi.

pip install howdoi

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

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

Но имейте в виду — он вычищает код из лучших ответов на StackOverflow. Он не всегда может предоставить самую полезную информацию...

howdoi exit vim

inspect

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

Пример кода ниже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 Интересует как плагин для редактора. К счастью, нас уже много!

**kwargs

В изучении любого языка есть много этапов. Используйте Python и разбирайтесь в тонкостях**kwargsГрамматика может считаться важной вехой.

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

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

dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
    print(a + b)
    return
# 这些做同样的事情:
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)

map

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

x = [1, 2, 3] 
y = map(lambda x : x + 1, x)
# 打印出 [2,3,4]
print(list(y))

В приведенном выше примереmap()поставить простойlambdaфункция применяется кx, Он возвращает объект карты, который можно преобразовать в какой-либо итерируемый объект, такой как список или кортеж.

newspaper3k

Если вы не видели его, будьте готовы бытьPython newspaper module Модуль в шоке. Он позволяет получать новостные статьи и связанные с ними метаданные из ряда ведущих международных изданий. Вы можете получить изображения, текст и имена авторов. у него даже есть некоторыеВстроенные возможности НЛП.

Поэтому, если вы планируете использовать в своем следующем проектеBeautifulSoupИли какую-нибудь другую библиотеку веб-скрейпинга «сделай сам», используйте этот модуль, чтобы сэкономить много времени и усилий.

pip install newspaper3k

Operator overloading

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

pprint

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

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

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

Queue

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

Очередь «первым пришел — первым вышел» (FIFO) позволяет извлекать объекты в том порядке, в котором они были добавлены. Очереди «последним пришел – первым обслужен» (LIFO) позволяют вам сначала получить доступ к недавно добавленным объектам.

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

Вот как использовать очереди в PythonQueueПример выполнения многопоточного программирования.

__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()
# 打印 <some description here>
print(someInstance)

sh

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

Долженбиблиотека SHПозволяет вызывать любую программу как обычную функцию — полезно для автоматизации рабочих процессов и задач.

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

через стандартную библиотеку PythonUUID-модульБыстрый и простой способ создания универсального уникального идентификатора (или «UUID»).

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 вероятность существования дубликатов значительно ниже одной на миллиард.

Virtual environments

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

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

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

Теперь вы можете запускать отдельные версии и установки Python на одном компьютере.

wikipedia

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

import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
    print(link)

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

xkcd

Юмор — ключевая особенность языка Python, основанного на британских комедийных пародиях.Питонский летающий циркназванный. Многие из официальной документации Python ссылаются на самый известный скетч шоу. Однако юмор Python не ограничивается документацией. Попробуйте запустить следующую строку:

import antigravity

YAML

YAMLОтносится к «языку без разметки». Это язык форматирования данных и надмножество JSON.

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

Установите, а затем импортируйте в свой проект:

pip install pyyaml

import yaml

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

zip

Финал тоже отличный модуль. Вы когда-нибудь сталкивались с необходимостью сформировать словарь из двух списков?

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

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

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

напиши в конце

Python — очень разнообразный и хорошо проработанный язык, поэтому в нем должно быть много возможностей, которые я не учел. Если вы хотите узнать больше о модулях Python, вы можете обратиться кawesome-python.


Уведомление об авторских правах

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

Автор оригинала: Data STUDIO
Оригинальная ссылка:Tickets.WeChat.QQ.com/Yes/U28UV PT FC…

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