Типинг Python: есть ли способ ввести переменную со значением другой переменнойPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Типинг Python: есть ли способ ввести переменную со значением другой переменной

Сообщение Anonymous »

Я хотел бы знать, есть ли возможность установить тип переменной в зависимости от значения другой переменной. , TCP или Unix Socket), когда получено сообщение, мы можем прочитать сообщение в функции, записанной таким образом: < /p>

Код: Выделить всё

def _message_received(path: str, types: str, args: tuple):
# Each character of 'types' defines the type of args items
# for example if types == 'sifb'
# it means that 'args' is of type tuple[str, int, float, bytes]
...
< /code>
Итак, конечно, я могу распаковывать аргументы таким образом: < /p>
def _message_received(path: str, types: str, args: tuple):
if types == 'sif':
args: tuple[str, int, float]
value_str, value_int, value_f = args
< /code>
Интересно, возможно ли автоматизировать этот процесс, например, определение функции < /p>
def typed_args(args: tuple, types: str):
ret_args = []

for i in range(len(types)):
type_ = types[i]
arg = args[i]
if type_ == 's':
ret_args.append(str(arg))
elif type_ == 'f':
ret_args.append(float(arg))
elif type_ == 'i':
ret_args.append(int(arg))

return tuple(ret_args)

def _message_received(path: str, types: str, args: tuple):
if types == 'sif':
args = typed_args(args, types)
# of course here, pylance can't know the type of 'args'.
# I wonder if there is a way to force it to execute 'typed args'
# with the fact it knows that types == 'sif'
< /code>
Могу ли я написать функцию, чтобы Pylance знал типы переменной 'args'? Все, что я могу знать на данный момент, это то, что Args имеет тип кортежа [str | int | Поплавок | Байты] 
, но Pylance не может знать, ни его длину, ни типы его предметов для кортежа. Было бы удобно при их распаковке.

Подробнее здесь: https://stackoverflow.com/questions/794 ... ther-varia
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»