Архив метки: Python

Простой Python. Современный стиль программирования. 2-е изд

Простой Python. Современный стиль программирования. 2-е изд

Книга Простой Python. Современный стиль программирования. 2-е изд. «Простой Python» познакомит вас с одним из самых популярных языков программирования. Книга идеально подойдет как начинающим, так и опытным программистам, желающим добавить Python к списку освоенных языков. Любому программисту нужно знать не только язык, но и его возможности.

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

Скачать с mail облака

2021-10-13T21:48:34Книги и Курсы

Основы Python. Научитесь думать как программист

Osnovy_Python_Nauchites_dumat_kak_programmist

Книга: Основы Python. Научитесь думать как программист. Это практическое руководство последовательно раскрывает основы программирования на языке Python. Вы будете продвигаться от самых простых тем к сложным и получите полное представление об одном из самых популярных языков программирования.

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

Скачать с mail облака

2021-10-13T20:43:25Книги и Курсы

Байты в строку в Python

В Python всякий раз, когда мы что-либо сохраняем, он хранит это как байт. Байты не читаются человеком, а строки являются удобочитаемыми формами. Всякий раз, когда мы сохраняем какую-либо строку, она не будет напрямую сохранять ее как строку; он будет закодирован в байты с использованием различных методов, таких как ASCII и UTF-8.

Например , ‘I am a andreyex’.encode(‘ASCII’)

 

В приведенном выше примере мы конвертируем строку в байты, используя метод кодирования ASCII. И когда мы распечатаем его с помощью метода печати python, мы увидим результаты вроде b’I am a andreyex ‘. Здесь мы видим, что строка просто следует за одним символом b. На самом деле мы не можем читать байты, но здесь функция печати python декодирует байты в удобочитаемые формы, чтобы мы могли читать строки.

Но на самом деле, когда мы запускаем эту строку, чтобы увидеть каждый символ строки байтов, она будет напечатана следующим образом:

str1 = 'I am a andreyex'

print(type(str1))

str2 = b'I am a andreyex'

print(type(str2))


 

Мы создали две строки. Одна строка проста. А другая строка — байты. Когда мы печатаем оба типа строк, мы получаем результаты, как показано ниже. Приведенные ниже результаты показывают, что одна строка является байтовым типом, а другая — строковым.

<class 'str'>

<class 'bytes'>

 

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

for a in str1:

print(a)


 

Вывод:

I



a

m



a

a

n

d

r

e

y

e

x

 

Теперь мы собираемся напечатать еще одну строку (str2), которая является байтовым типом.

for a in str2:

print(a)


 

Вывод:

73

32

97

109

32

97

32

97

110

100

114

101

121

101

120

 

Из приведенных выше результатов мы можем видеть различия между типом байтов и типом строки. Тип байтов не является удобочитаемой формой.

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

 

Метод 1. Использование функции map()

В этом методе мы будем использовать функцию map() для преобразования байтов в строковый формат. Приведенная ниже небольшая программа проясняет концепцию.

byte = [97, 99, 100]



s = ''.join(map(chr, byte))

print(s)


 

Вывод:

acd

 

Строка 1: Мы создали список байтов имени.

Строка 3: Затем мы передали символы элемента в списке в качестве параметра и байт в качестве параметра функции join(), которая объединит все символы после преобразования. Наконец, результат распечатывается.

 

Метод 2 : использование функции decode()

Другой метод — это функция decode(). Функция декодирования работает прямо противоположно функции encode().

# преобразование байтов в строку с помощью decode()



str = b'blogs andreyex'

print(str)

print(type(str))



# теперь преобразование байтов в строку

output = str.decode()



print('nOutput:')

print(output)

print(type(output))


 

Вывод:

b'blogs andreyex'

<class 'bytes'>

Вывод:

blogs andreyex

<class 'str'>

 

Строка 3: Мы создали байтовую строку.

Строки с 4 по 5: эти строки просто печатают информацию о строке, которую мы создали в строке 3.

Строка 8: Теперь мы вызываем функцию декодирования и сохраняем результат под новым именем переменной.

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

 

Способ 3. Использование функции codecs.decode()

В этом методе мы будем использовать функцию codecs.decode(). Эта функция используется для преобразования двоичной строки в нормальную форму. Итак, давайте посмотрим, как на самом деле работает эта функция.

# преобразование байтов в строку с помощью codecs()

import codecs

str = b'blogs andreyex'

print(str)

print(type(str))



# теперь преобразование байтов в строку

output = codecs.decode(str)



print('nOutput:')

print(output)

print(type(output))


 

Вывод:

b'blogs andreyex'

<class 'bytes'>

Вывод:

blogs andreyex

<class 'str'>

 

Строка 2:  Импортируем библиотечные кодеки.

Строка 3: Мы создали байтовую строку.

Строки с 4 по 5: эти строки просто печатают информацию о строке, которую мы создали в строке 3.

Строка 8: Теперь мы вызываем функцию caodecs.decode и сохраняем результат под новым именем переменной.

Строки с 11 по 12: Эти строки показывают, что теперь наша строка больше не имеет байтового типа, и мы можем подтвердить тип вывода, который является строковым.

 

Метод 4 : использование функции str()

Мы также можем преобразовать байты в обычные строки с помощью функции str(). Небольшая программа для понимания этого метода приведена ниже.

if __name__ == '__main__':

str1 = b'blogs andreyex'

print(str)

print(type(str))

# теперь конвертируем байты в строку

output = str(str1, 'utf-8')

print('nOutput:')

print(output)

print(type(output))

 

Вывод:

<class 'str'>

<class 'type'>

Вывод:

blogs andreyex

<class 'str'>

 

Строка 2: мы создали байтовую строку.

Строка 3–4: эти строки просто печатают информацию о строке, которую мы создали в строке 3.

Строка 6: Теперь мы вызываем функцию str () и сохраняем результат под новым именем переменной.

Строки с 7 по 9: Эти строки показывают, что теперь наша строка больше не имеет байтового типа, и мы можем подтвердить тип вывода, который является строковым.

 

Заключение

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

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



2021-10-12T12:01:59
Python

Python: быстрый старт

Python: быстрый старт

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

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

Не судите новичков строго, если вы гуру программирования, вам эта книга не нужна, но возможно она пригодится вашему ребенку, брату, сестре, другу или подруге 😉

Серия «Быстрый старт» — отличное решение, и вот почему: сложные понятия разбиты на простые шаги — вы сможете освоить язык Python, даже если никогда раньше не занимались программированием; все фундаментальные концепции подкреплены реальными примерами; вы получите полное представление о Python: структуры управления, методы обработки ошибок, концепции объектно-ориентированного программирования и т. д.; в конце книги вас ждет интересный проект, который поможет усвоить полученные знания.

Скачать с mail облака

2021-10-11T16:26:36Книги и Курсы

Как переименовать файл в Python

Мы можем переименовывать файлы в терминале Linux, используя разные подходы, один из подходов — использование Python, который обсуждается в этой статье. Мы не можем писать код Python прямо в терминале, мы создаем отдельный файл в текстовом редакторе. «rename» — это одна из функций операционной системы, поэтому для этой цели мы будем использовать модуль ОС в Python.

Чтобы переименовать файл с помощью модуля ОС Python, следуйте процедуре, приведенной ниже:

 

Переименовать файл в Python с помощью модуля ОС в Ubuntu

Требования:

  • Файл должен существовать ранее
  • Любая версия Python должна быть установлена ​​в вашей системе Linux.

 

Модуль ОС Python позволяет выполнять различные операции, связанные с операционной системой. Переименование файла также является одной из операций операционной системы, которую можно выполнить с помощью функции модуля ОС Python os.rename().

Теперь выполните следующую процедуру, чтобы изменить имя файла с помощью модуля ОС Python:

Создание файла в Python: сначала вам нужно создать файл Python с помощью редактора nano, например, мы создали файл Python_file.py с помощью указанной ниже команды:

$ nano python_file.py

 

Вы можете установить имя файла по вашему выбору.

 

Использование функции «os.rename» для переименования файла

Чтобы переименовать файл в текущем каталоге: Указанный ниже синтаксис функции «os.rename ()» будет использоваться для переименования файла в текущем каталоге:

$ os.rename("source file", "destination file")

 

  • исходный файл : старое имя файла
  • целевой файл : новое имя файла

 

Теперь напишите указанный ниже код в Python_file, чтобы переименовать «old_andreyex.txt» в «new_andreyex.txt» в текущем каталоге:

«import os» используется для импорта модуля ОС в программу:

import os



os.rename("old_andreyex.txt","new_andreyex.txt")

 

Нажмите «ctrl + s», чтобы сохранить файл, и «ctrl + x», чтобы выйти из файла.

Теперь, чтобы выполнить файл, запустите указанную ниже команду, я использую Python3 для выполнения Python_file.py, поскольку Python3 предварительно установлен в системе Ubuntu:

$ python3 python_file.py

 

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

Теперь, чтобы убедиться, что файл переименован или нет, снова перечислите файлы текущего рабочего каталога.

Чтобы переименовать файл в каталоге отдельно от текущего каталога: Для переименования файла будет использоваться указанный ниже синтаксис функции «os.rename()»:

$ os.rename("source file", "destination file")

 

  • исходный файл: путь к файлу + старое имя файла
  • целевой файл: путь к файлу + измененное/новое имя файла

 

Теперь напишите указанный ниже код в Python_file.py, чтобы переименовать «old_andreyex.txt» в «new_andreyex.txt» в каталоге рабочего стола:

import os



os.rename("/home/masterand/Desktop/old_andreyex.txt","/home/masterand/Desktop/new_lin



uxhint.txt")

 

Нажмите « ctrl + s », чтобы сохранить файл, и « ctrl + x », чтобы выйти из файла.

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

Теперь, чтобы убедиться, что файл переименован или нет, снова перечислите файлы каталога Desktop.

Чтобы переименовать несколько файлов: мы также можем изменить имя нескольких файлов одновременно. Например, у меня в каталоге рабочего стола есть три файла: file1, file2, file3, и мы хотим добавить префикс «andreyex_» ко всем трем именам файлов, а затем запустить указанный ниже код в «Python_file.py».

import os



for textfile in os.listdir("/home/masterand/Desktop"):



os.rename(textfile,f"/home/masterand/Desktop/andreyex_{textfile}")

 

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

Заключение:

Функция модуля ОС Python под названием os.rename() используется для переименования файлов с помощью Python. Мы можем переименовывать файлы, используя разные методы, но в этой статье мы обсудили, как переименовывать файлы в текущем каталоге, кроме текущего каталога, и как переименовывать несколько файлов с помощью модуля Python OS. Если вы программист на Python и хотите переименовать файл/файлы с помощью Python, эта статья наверняка вам поможет.



2021-10-11T10:53:05
Python

Как использовать классы данных в Python

В этой статье будет рассмотрено руководство по использованию новых объектов «dataclass», включенных в Python 3.7 и более новые версии. Классы данных похожи на другие классы Python, но они специально разработаны для использования в качестве контейнеров данных и обеспечивают более чистый и короткий синтаксис для быстрого создания объектов данных. Если вы знаете об объектах namedtuple и использовали их в Python, вы можете определить их как изменяемые объекты типа namedtuple. Вы можете создавать новые экземпляры классов данных, как любой другой класс или объекты типа namedtuple, и получать доступ к их атрибутам, используя точечную нотацию.

 

Базовый синтаксис и использование

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

class StockInHand:

def __init__(self, apples, oranges, mangoes):

self.apples = apples

self.oranges = oranges

self.mangoes = mangoes



stock = StockInHand(40, 50 , 60)

print (stock.apples, stock.oranges, stock.mangoes)

 

В приведенном выше примере кода был создан новый класс с именем «StockInHand» с определенным внутри него методом «__init__». Метод __init__ автоматически вызывается всякий раз, когда вы создаете новый экземпляр класса StockInHand. В этом случае метод __init__ был определен с некоторыми обязательными аргументами. Таким образом, вы не можете создать новый экземпляр StockInHand без некоторых значений необходимых аргументов. Аргумент «self» предоставляет ссылку на экземпляр класса, поэтому вы можете использовать его для ссылки на любую переменную или метод внутри класса, если эти переменные и методы были определены с использованием аргумента self. Аргумент self действует как удобный инструмент, и его можно назвать как угодно. Вы также можете полностью его опустить.

После выполнения приведенного выше примера кода вы должны получить следующий результат:

40 50 60

 

Тот же класс можно определить с помощью класса данных следующим образом:

from dataclasses import dataclass



@dataclass

class StockInHand:

apples: int

oranges: int

mangoes: int



stock = StockInHand(40, 50 , 60)

print (stock.apples, stock.oranges, stock.mangoes)

 

Первый оператор импортирует декоратор «dataclass» из модуля «dataclasses». Декораторы можно использовать для изменения поведения объектов Python без их фактического изменения. В этом случае декоратор классов данных предопределен и поступает из модуля классов данных. Чтобы определить класс данных, вам необходимо присоединить декоратор класса данных с помощью символа «@» к классу Python, как показано в приведенном выше примере кода. В следующих нескольких операторах переменные в классе данных определяются с помощью подсказок типа, чтобы указать, к какому типу они относятся. Подсказки типа были введены в Python 3.6 и определены с помощью символов «:» (двоеточие). Вы можете создать новый экземпляр класса данных, как любой другой класс Python. После выполнения приведенного выше примера кода вы должны получить следующий результат:

40 50 60

 

Обратите внимание, что если метод в классе данных возвращает значение, вы можете назначить ему подсказку типа, используя символ «->». Вот пример:

from dataclasses import dataclass



@dataclass

class StockInHand:

apples: int

oranges: int

mangoes: int



def total_stock(self) -> int:

return self.apples + self.oranges + self.mangoes



stock = StockInHand(40, 50 , 60)

print (stock.total_stock())

 

Был создан новый метод под названием «total_stock», и ему была назначена подсказка типа с использованием зарезервированного ключевого слова «int» для указания типа возвращаемого значения. После выполнения приведенного выше примера кода вы должны получить следующий результат:

150

 

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

Вы можете назначить значения по умолчанию членам классов данных после подсказок типа. Вот пример:

from dataclasses import dataclass



@dataclass

class StockInHand:

apples: int = 40

oranges: int = 50

mangoes: int = 60



def total_stock(self) -> int:

return self.apples + self.oranges + self.mangoes



stock = StockInHand()

print (stock.total_stock())

 

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

150

 

Члены Dataclass изменчивы

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

from dataclasses import dataclass



@dataclass

class StockInHand:

apples: int = 40

oranges: int = 50

mangoes: int = 60



def total_stock(self) -> int:

return self.apples + self.oranges + self.mangoes



stock = StockInHand()

stock.apples = 100

print (stock.total_stock())

 

Значение переменной apples было изменено перед вызовом метода total_stock. После выполнения приведенного выше примера кода вы должны получить следующий результат:

210

 

Создание класса данных из списка

Вы можете создать класс данных программно, используя метод make_dataclass, как показано в примере кода ниже:

import dataclasses



fields = [("apples", int, 40), ("oranges", int, 50), ("mangoes", int, 60)]

StockInHand = dataclasses.make_dataclass(

"StockInHand", fields,

namespace={'total_stock': lambda self: self.apples + self.oranges + self.mangoes}

)



stock = StockInHand()

stock.apples = 100

print (stock.total_stock())

 

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

from dataclasses import dataclass



@dataclass

class StockInHand:

apples: int = 40

oranges: int = 50

mangoes: int = 60



def total_stock(self):

return self.apples + self.oranges + self.mangoes



stock = StockInHand()

stock.apples = 100

print (stock.total_stock())

 

После выполнения двух приведенных выше примеров кода вы должны получить следующий результат:

210

 

Зачем использовать класс данных вместо класса?

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

 

Заключение

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



2021-10-06T08:27:58
Python