Как достать значение с оператора внутри функции
Нужно получить переменную с оператора и продолжить функции с помощью нее
async def get_info(call: CallbackQuery, bot: Bot):
call_number = int(call.data.replace('server', '', 1).split('_')[1])
print(call_number)
global info
global player_names
global ip
global port
global fh_type
if call_number == '1':
server = server_1_ip
return server
elif call_number == '2':
server = server_2_ip
return server
elif call_number == '3':
server = server_3_ip
return server
elif call_number == '4':
server = server_4_ip
return server
elif call_number == '5':
server = server_5_ip
return server
elif call_number == '6':
server = server_6_ip
return server
elif call_number == '7':
server = server_7_ip
return server
elif call_number == '8':
server = server_8_ip
return server
ip = str(server.split(',')[0])
port = int(server.split(',')[1])
fh_type = server.split(',')[2]
address = (f"{ip}", port)
print(address)
info = a2s.info(address)
players = a2s.players(address)
print(info)
print(players)
сверху прописанные переменные global если что нужны. я потом с ним буду работать
Ответы (1 шт):
Автор решения: mrgervant
→ Ссылка
Если речь о переменной server
, то нужно убрать все return
- если какой-то из них срабатывает, то функция прекращает работу не доходя до блоков кода ниже.
Измененный код через словарь - более короткая запись:
async def get_info(call: CallbackQuery, bot: Bot):
global info
global player_names
global ip
global port
global fh_type
call_number = int(call.data.replace('server', '', 1).split('_')[1])
print(call_number)
server_dict = {
1: server_1_ip,
2: server_2_ip,
3: server_3_ip,
4: server_4_ip,
5: server_5_ip,
6: server_6_ip,
7: server_7_ip,
8: server_8_ip
}
# server выберется по соответствующему значению call_number
# если не найдет - поставит значение по умолчанию (например, server_1_ip)
# можно убрать - тогда будет возвращаться None
server = server_dict.get(call_number, server_1_ip)
ip = str(server.split(',')[0])
port = int(server.split(',')[1])
fh_type = server.split(',')[2]
address = (f"{ip}", port)
print(address)
info = a2s.info(address)
players = a2s.players(address)
print(info)
print(players)
Использование dict.get()
позволяет настроить значение по умолчанию (на случай, когда call_number не попал ни в одно из возможных значений).