Предикат имеет очень много значений, но в программирование это функция которая возвращает значение
True или False.👍1
Чтобы вывести число с запятыми черед каждые 3 цифры для читабельности можно написать след код:
#answer 123,456,789
print(‘{:,}’.format(123456789))#answer 123,456,789
👍1
Insert() and append()
a = [1,2,3]
a.insert([4,5,6])
# a => [1,2,3,[4,5,6]]
a.extend([4,5,6])
a=> [1,2,3,4,5,6]
Extend равен на оператор + просто продолжает список.
Если в insert подавать список то в ответе получится вложенный список👍1
Сегодня начал учить про асинхронность (asyncio)
Асинхронность ну или конкурентность в питоне помогает быстрее реагировать и быстрее работать. Есть понятия корутина, таск, футура.
Ниже обычный пример асинхронный функции:
Асинхронность ну или конкурентность в питоне помогает быстрее реагировать и быстрее работать. Есть понятия корутина, таск, футура.
Ниже обычный пример асинхронный функции:
import asyncio
async def hello():
Print(‘hello’)
await asyncio.sleep(3)
print(‘world’)👍1
Как вернуть значение словаря по ключу?
Самый обычный способ это dict[‘key’]
А если этого ключа нет то предыдущий код вызовет ошибку. В таком случае лучше использовать get():
dict.get(‘key’, default)
В этот раз если ключа не будет вернется значение deafult
Самый обычный способ это dict[‘key’]
А если этого ключа нет то предыдущий код вызовет ошибку. В таком случае лучше использовать get():
dict.get(‘key’, default)
В этот раз если ключа не будет вернется значение deafult
👍1
list generators and list comprehension
Сгенерировать лист из 10 нулей:
arr = [0 for _ in range(10)]
Сгенерировать четные числа до n:
arr = [i for i in range(n) if i % 0 == 0]
Сгенерировать лист из 10 нулей:
arr = [0 for _ in range(10)]
Сгенерировать четные числа до n:
arr = [i for i in range(n) if i % 0 == 0]
Forwarded from BZD Hacker_lib
Black_Hat_Python_Программирование_для_хакеров_и_пентестеров_.pdf
8.9 MB
📔 Title: Black Hat Python. Программирование для хакеров и пентестеров.
#Linux #Book #rus
🌐 Lang.: Russian
🧔 Author: Brian Ward
🕘 Year: 2022
📑 Pages: 224
#️⃣ ISBN: -978-5-4461-3935-4
📝 Description: Во втором издании бестселлера Black Hat Python вы исследуете темную сторону возможностей Python — все от написания сетевых снифферов, похищения учетных данных электронной почты и брутфорса каталогов до разработки мутационных фаззеров, анализа виртуальных машин и создания скрытых троянов.
BZD Hacker_lib
#Linux #Book #rus
🌐 Lang.: Russian
🧔 Author: Brian Ward
🕘 Year: 2022
📑 Pages: 224
#️⃣ ISBN: -978-5-4461-3935-4
📝 Description: Во втором издании бестселлера Black Hat Python вы исследуете темную сторону возможностей Python — все от написания сетевых снифферов, похищения учетных данных электронной почты и брутфорса каталогов до разработки мутационных фаззеров, анализа виртуальных машин и создания скрытых троянов.
BZD Hacker_lib
👍1
Несколько полезных методов строк:
istitle() - проверка на заголовок
isdigit() - проверка на цифры
isupper() - проверка на на заглавные буквы
islower() - проверка на маленькие буквы
is.alpha() - проверка на любые буквы
is.alnum() - проверка на любые буквы и цифры
Методы строк которые меняют регистры:
lower() - все буквы делает маленькими
upper() - все буквы делает большими
swapcase() - все регистры каждой буквы меняет на противоположную
title() - первую букву каждого слова делает заглавной, остальные буквы маленькими
capitalize() - только у первого слова первая буква будет большой, все остальные маленькие
Методы нахождения:
index() - Метод .index также возвращает индекс первой найденной подстроки, аналогично методу .find
S.find(sub, start, end) - Метод .find возвращает индекс первого слева вхождения строки sub в строке S. Подстрока sub ищется на всем срезе строки S. Но вы можете указать интервал поиска, передав второй и третий аргументы. Метод .find вернет значение -1, если ничего не будет найдено.
rfind() - как find только начинает искать справа буква r - right
S.startswith(prefix, start, end) - Данный метод возвращает True если строка S начинается с последовательности символов prefix (префикса) и False в противном случае. При передаче параметра start проверка начнется именно с этой позиции. Если передать значение end, проверка закончится в этой позиции.
S.endswith(prefix, start, end) - Данный метод возвращает True если строка S заканчивается последовательностью символов prefix (префикса) и False в противном случае. При передаче параметра start проверка начнется именно с этой позиции. Если передать значение end, проверка закончится в этой позиции.
Методы дополнения или для красивого вывод:
s.ljust(width, fillchar) - заполняет справа символами чтобы сдвинуть влево
s.rjust(width, fillchar) - заполняет слева символами чтобы сдвинуть вправо
s.center(width, fillchar) - заполняется слева справа чтобы слово было в центре
istitle() - проверка на заголовок
isdigit() - проверка на цифры
isupper() - проверка на на заглавные буквы
islower() - проверка на маленькие буквы
is.alpha() - проверка на любые буквы
is.alnum() - проверка на любые буквы и цифры
Методы строк которые меняют регистры:
lower() - все буквы делает маленькими
upper() - все буквы делает большими
swapcase() - все регистры каждой буквы меняет на противоположную
title() - первую букву каждого слова делает заглавной, остальные буквы маленькими
capitalize() - только у первого слова первая буква будет большой, все остальные маленькие
Методы нахождения:
index() - Метод .index также возвращает индекс первой найденной подстроки, аналогично методу .find
S.find(sub, start, end) - Метод .find возвращает индекс первого слева вхождения строки sub в строке S. Подстрока sub ищется на всем срезе строки S. Но вы можете указать интервал поиска, передав второй и третий аргументы. Метод .find вернет значение -1, если ничего не будет найдено.
rfind() - как find только начинает искать справа буква r - right
S.startswith(prefix, start, end) - Данный метод возвращает True если строка S начинается с последовательности символов prefix (префикса) и False в противном случае. При передаче параметра start проверка начнется именно с этой позиции. Если передать значение end, проверка закончится в этой позиции.
S.endswith(prefix, start, end) - Данный метод возвращает True если строка S заканчивается последовательностью символов prefix (префикса) и False в противном случае. При передаче параметра start проверка начнется именно с этой позиции. Если передать значение end, проверка закончится в этой позиции.
Методы дополнения или для красивого вывод:
s.ljust(width, fillchar) - заполняет справа символами чтобы сдвинуть влево
s.rjust(width, fillchar) - заполняет слева символами чтобы сдвинуть вправо
s.center(width, fillchar) - заполняется слева справа чтобы слово было в центре
Несколько примеров форматирования строк через f-strings
Hello!
-------Hello!-------
--------------Hello!
Hello!??????????????
st = 'Hello!'Результаты:
print(f'{st}')
print(f'{st:-^20}')
print(f'{st:->20}')
print(f'{st:?<20}')
Hello!
-------Hello!-------
--------------Hello!
Hello!??????????????
👍1
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}
print(set_a & set_b) #intersection - Пересечение множествprint(set_a | set_b) #union - Объединение множествprint(set_a - set_b) #difference - разность множествprint(set_a ^ set_b) #symmetric difference - симметрическая разность множеств👍1
как прочитать неопределенное кол-во элементов? Ниже приведен один из примеров:
import sys
from sys import stdin
lines = stdin.read().splitlines()👍1
Чтение файлов
Самый простой способ чтения файла это:
Для самого чтения из файла используются следующие функции
- read() - читает с самого начала до конца возвращает целую строку
- readline() - читает одну строку возвращает строку
- readlines() - читает все строки и возвращает list
Если в файле есть русские слова то нужно добавить кодировку
-
-
-
-
-
-
-
-
-
-
-
Самый простой способ чтения файла это:
sqlФункция open() в стандартном режиме открывает файл для чтения.
file = open('name_of_file.txt')
print(file.read())
sqlПеременная file = _io.TextIOWrapper
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
Для самого чтения из файла используются следующие функции
- read() - читает с самого начала до конца возвращает целую строку
- readline() - читает одну строку возвращает строку
- readlines() - читает все строки и возвращает list
Если в файле есть русские слова то нужно добавить кодировку
sqlПосле открытие и обработки файла нужно файл закрыть file.close(). Но можно об этом не волноваться когда используешь контекстный менеджер with. Пример ниже
file = open('name_of_file.txt', encoding = 'utf-8')
sqlЕсть несколько режимом открытия файла:
with open('name_of_file.txt', encoding='utf-8') as f:
print(f.read())
-
r: открывает файл в режиме «только для чтения». Этот режим применяется по умолчанию для функции open. Чтение файла начинается с начала-
rb: открывает файл в режиме «только для чтения» в двоичном формате и начинает чтение с начала файла. Буква b обозначает слово binary(двоичный). Хотя двоичный формат можно использовать для разных целей, обычно он используется при работе с такими вещами, как изображения, видео и т. д.-
r+: открывает файл для чтения и записи, помещая указатель в начало файла.-
w: открывается в режиме «только для записи». Указатель помещается в начало файла, и это перезапишет любой существующий файл с таким же именем. Он создаст новый файл, если файл с таким именем не существует.-
wb: открывает файл в режиме «только для записи» в двоичном режиме.-
w+: открывает файл для записи и чтения.-
wb+: открывает файл для записи и чтения в двоичном режиме.-
a: открывает файл для добавления к нему новой информации. Указатель помещается в конец файла. Новый файл создается, если файл с таким именем не существует.-
ab: открывает файл для добавления в двоичном режиме.-
a+: открывает файл как для добавления, так и для чтения.-
ab+: открывает файл как для добавления, так и для чтения в двоичном режиме.👍1
# Lambda Функции
Пример обычной функции и lambda функции (строчной функции, анонимной функции)
Не все функции можно превратить в анонимную функцию. Только те которые возвращают. Из-за этого анонимные функции не имеют ключевое слова
Можно сразу применить функции в конце внутри скобке написать аргументы
Однострочные функции удобно использовать в функциях
Но иногда нужно видеть грань когда анонимные функции будут наоборот могут снизить читабельность вашего кода. как в примере ниже
Лучше использовать генераторы списков (list comprehension) чем лямбду
Пример обычной функции и lambda функции (строчной функции, анонимной функции)
python
def func(a):
return a * 2
func = lambda a: a * 2
Не все функции можно превратить в анонимную функцию. Только те которые возвращают. Из-за этого анонимные функции не имеют ключевое слова
return. Добавления этого слова приведет к SyntaxError. Так же к этому приведет assert, pass, raise. Нужно отметить что так же не поддерживает аннотации Можно сразу применить функции в конце внутри скобке написать аргументы
python
>>> (lambda x: x + 1)(2)
3
>>> (lambda x, y: x + y)(2, 3)
5
Однострочные функции удобно использовать в функциях
map(), filter(), functools.reduce()
Но иногда нужно видеть грань когда анонимные функции будут наоборот могут снизить читабельность вашего кода. как в примере ниже
python
>>> list(map(lambda x: x.capitalize(), ['cat', 'dog', 'cow']))
['Cat', 'Dog', 'Cow']
>>> [x.capitalize() for x in ['cat', 'dog', 'cow']]
['Cat', 'Dog', 'Cow']
#2 ой пример с filter
>>> even = lambda x: x%2 == 0
>>> list(filter(even, range(11)))
[0, 2, 4, 6, 8, 10]
>>> [x for x in range(11) if x%2 == 0]
[0, 2, 4, 6, 8, 10]
Лучше использовать генераторы списков (list comprehension) чем лямбду
👍1
В следующим примере найдем ключ у которого значения равен максимальному
d = {
'a': 1,
'b': 2,
'c': 5,
'e': 0
}
print(max(d, key=d.get))
Обратите внимание если сделать просто: max(d) -> то это вернет 'e' то есть максимум из ключей👍1
