Мне нужно проверить несколько переменных и вызвать на них одну и ту же функцию
if isinstance(VarA,complex):
VarA=SomeFunction(VarA)
if isinstance(VarB,complex):
VarB=SomeFunction(VarB)
if isinstance(VarC,complex):
VarC=SomeFunction(VarC)
Можно ли написать этот код короче/читабельнее?
Вы можете сделать это:
a, b, c = (f(x) if isinstance(x, complex) else x for x in [a, b, c])
Это становится более уродливым, когда имеется более трех переменных, поэтому, если вы нуждаетесь в большом количестве переменных, которые используются для выполнения одного и того же вычисления, вы должны подумать об использовании списков и циклов:
List = [1, 2, 3 + 1j, 4, 5 - 2j]
processed = [f(x) if isinstance(x, complex) else x for x in List]
Одним из решений является использование словаря для хранения вашего переменного количества переменных.
Затем выполните итерацию словаря и измените значения, если ваше условие выполнено.
vars = {'A': VarA, 'B': VarB, 'C': VarC}
for k, v in vars.items():
if isinstance(v, complex):
vars[k] = SomeFunction(vars[k])
Вы можете сделать так,
varA,varB,varC = (SomeFunction(var) if isinstance(var,complex) else var for var in [varA,varB,varC])