Затем все приводится к формату строки типа ключ=значение
Как можно значение оставить типа float?
import asyncio
import typing
class ThrottledResource:
def __init__(self, delay: float):
self._delay = delay
self._queue = asyncio.Queue()
self._task = None
def start(self):
self._task = asyncio.create_task(self._work_loop)
def stop(self):
self._task.cancel()
self._task = None
# этот метод вызывается клиентским кодом, получает параметры и возвращает отклик спустя время.
async def query(self, params):
future = asyncio.Future() # Future просигналит, когда наш запрос будет обслужен
await self._queue.put((future, params))
result = await future # корутина спит, пока запрос не обслужат
return result
async def _work_loop(self):
while True:
future, params = await. self._queue.get() # ждем, пока не придёт запрос
try:
result = await call_api(params) # тут делаем асинхронное обращение к сервису
except Exception as err:
future.set_exception(err) # была ошибка - теперь await future выкинет исключение
else:
future.set_result(result) # полуен результат - await future вернёт его
self._queue.task_done() # каждому успешному get() соответствует task_done()
asyncio.sleep(self._delay) # можно учесть, сколько времени делался запрос. Но стоит ли?
api = ThrottledResource(delay=1.0)
api.start()
...
result = await api.query(params) # await подождёт, пока не дойдёт очередь до нашего запроса
from sqlite import db_start, create_profile, edit_profile
from main import balance
print(path)
. Сразу станет видно, что ничего не удваивается.'a\\b'
- это то же самое, что и r'a\b'
.for i in range(word_count, 0, -1):
И можно ли его написать более компактно? Если да, то как?
part = word[a:b:c]
будет (условно) эквивалентноpart = ''
i = a
while i < b:
part = part + word[i]
i = i + c
c
. А для отрицательного будет while i > b:
.a
опущено, по умолчанию это начало последовательности (для c > 0) или конец (для c < 0).b
опущено, по умолчанию это конец последовательности (для c > 0) или начало (для c < 0).c
опущено, по умолчанию это 1.word_reversed = word[::-1]
# это эквивалентно
word_reversed = word[len(word)-1:-1:-1]
# imported_file.py
import telebot
from telebot import types
def setup(bot): # setup() принимает бота и прочее как параметры.
# да, прописываем обработчики прямо внутри setup()
# но вот глобальные переменные здесь прописывать не стоит
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
...
# main_file.py
import telebot
from telebot import types
import time
import imported_file
bot = telebot.TeleBot("ТОКЕН")
# убедись, что setup() вызывается строго один раз для каждого дополнительного файла!
imported_file.setup(bot)
... # дальше работаем как обычно
просто в папке не создается таблица бд и на этом все.
создает товар и сохраняет в бд без ошибок.
sqlite3.connect('somefile.db')
?somefile.db
будет рассчитываться относительно текущего рабочего каталога, который может меняться в зависимости от способа запуска скрипта, да и просто в ходе его работы. А может не меняться. Т.е. нет гарантий, что текущий рабочий каталог будет совпадать с каталогом, где лежит скрипт.from pathlib import Path
import sys
SCRIPT_DIR = Path(sys.argv[0]).parent.resolve() # каталог, где лежит выполняемый скрипт
DB_PATH = SCRIPT_DIR / 'somefile.db' # путь к файлу БД в этом каталоге
conn = sqlite3.connect(DB_PATH)
CREATE TABLE IF NOT EXISTS
не сработает, если таблица уже существует - но и только. Если она имеет неправильную структуру, данный вызов её не пересоздаст, а оставит как есть. Проверь структуру таблицы, либо через обращение к таблице схемы (хранит структуру всех таблиц к БД), либо подцепившись клиентом к твоей БД. class Enemy:
...
def mobReturn(self):
self.x_mob = self.rect.x
class Bullet(pygame.sprite.Sprite):
def update(self):
if x_mob>=100:
# include <fstream>
# include <string>
using namespace std;
const char* readfile(char* filename) {
ifstream file;
string lines, line;
file.open(filename);
if (file.is_open()) {
while (file >> line) {
lines += line;
}
file.close();
return lines.c_str();
} else {
char* trashVar = "Bad open";
return trashVar;
}
}
int main()
{
cout << readfile("filename.txt");
return 0;
}