Не работает проверка наличия отработки в функции
Проблема:
Есть функция check_tags
, если в ней была выполнена работа, то if check_tags != -1:
не должен отрабатывать, в моем случае он работает. Может я сделал неправильную проверку, как можно решить мою проблему?
Код:
tags_list = ['40ТЕСТ8381', '41ТЕСТ8381', '42ТЕСТ8381', '43ТЕСТ8381', '44ТЕСТ8381', '45ТЕСТ8381',
'46ТЕСТ8381', '47ТЕСТ8381']
if msg.find('ВНИМАНИЕ') != -1:
def check_tags():
for tags in tags_list:
if msg.find(tags) != -1:
conn = sqlite3.connect('database.db', check_same_thread=False)
cur = conn.cursor()
cur.execute('SELECT group_id FROM groups WHERE study_group=?', (tags,))
group_check = cur.fetchall()
if len(group_check) == 0:
print('Беседа группы не подключена!')
else:
for group_advert in group_check:
bot.send_message(group_advert[0], text=msg)
cur.close()
conn.close()
check_tags()
if check_tags != -1:
conn = sqlite3.connect('database.db', check_same_thread=False)
cur = conn.cursor()
cur.execute('SELECT group_id FROM groups')
groups_id = cur.fetchall()
for group_id in groups_id:
print(group_id)
bot.send_message(group_id[0], text=msg)
cur.close()
conn.close()
Ответы (1 шт):
Архитектура работы с функциями должна быть примерно такой:
def check_tags():
...
if некое_условие:
result = 1
else:
result = -1
return result
check_result = check_tags()
if check_result != -1:
...
То есть вы должны вернуть из функции какое-то значение, присвоить его в переменную и потом проверить.
Ещё более идиоматический вариант может выглядеть так:
def is_check_passed():
...
if некое_условие:
return True
else:
return False
if is_check_passed():
...
Если в функции есть цикл и условие в цикле, то идиома может быть немного другая, например:
def is_check_passed():
for ...:
...
if некое_условие:
...
return False
return True
if is_check_passed():
...
В этом случае, если условие ни разу не сработает, то вернётся True
, иначе вернётся False
. Можно сделать и наоборот. Можно сделать как угодно, всё на ваше усмотрение.