class Test:
a = ''
t1 = Test()
print(t1.a is Test.a) # True. t1.a ссылается на тот же объект, что и Test.a
t1.a = 'bar' # строки в питоне не изменяемы - мы заменяем объект, а не изменяем его!
print(t1.a is Test.a) # False. Теперь t1.a ссылается на другой объект.
type(something) == sometype
!gen = (x < 0 for x in some_list)
gen = [x < 0 for x in some_list]
то это уже генератор списка. Он сделает обычный список, каждый элемент которого рассчитан на основании x в some_list. Как следствие, все элементы будут сразу рассчитаны и сохранены в памяти, но зато итерироваться по этому списку можно будет сколько угодно раз.src[:,:,2]
red_channel = src[:,:,2]
Я в своем коде использую несколько функций
SELECT last_insert_rowid();
У тебя в боте должен быть объявлен набор констант, например:
Соответственно в базе, в таблице текстовых строк strings у тебя будут записи вида:
А в таблице пользователей languages будет вот такое:
И тогда, если твой бот хочет вывести приветствие, делаешь запрос:
SELECT lang FROM languages WHERE USERID = ?;
подставляя туда id пользователя. Если ни одной строки не получено - принимаешь какой-то язык по умолчанию. Если получена - значит, это язык, назначенный пользователю.
Тогда делаешь запрос:
И получаешь искомую строку.
В этом случае для добавления языка достаточно добавить новые строки в таблицу strings, и позволить пользователям задавать себе этот новый язык.
В более сложных случаях эта строка будет содержать подстановочные элементы вроде:
Тогда используешь один из методов форматирования строк, чтобы подставить в эту строку нужные данные.
output = line.format(name='John Doe', days=1)