Во-первых, вы можете удалить return None
, так как функция возвращает None
по умолчанию.
Во-вторых, вы можете использовать toReturn[1].endswith("boolean>")
, чтобы соответствовать концу строки, вместо того, чтобы сопоставлять всю строку с toReturn[1] == "<http://www.w3.org/2001/XMLSchema#boolean>"
. То же самое и со строкой int
.
В-третьих, вы можете хранить возвращаемое значение в одной переменной до if..elif
, тогда вам не нужно рассчитывать его дважды для каждого условия.
Код:
def getValue(tObject):
toReturn = tObject.split("^^")
if len(toReturn) == 2:
return_value = toReturn[0].replace('"', "")
if toReturn[1].endswith("boolean>"):
return bool(return_value)
elif toReturn[1].endswith("int>"):
return int(return_value)
Возможно, это не так уж и много, как улучшение логики c, но код теперь выглядит менее загроможденным. Если вы не хотите более кратких, "pythoni c" способов решения этой проблемы, другие ответы могут быть более подходящими.