int и long python. Как проводить проверку типа.
мне умные люди говорили, что проверять тип - это не pythonic. Идеоматичнее попробовать сделать с объектом то, что ты хочешь с ним сделать, и словить эксепшн на случай, если тип был не тот.
try:тогда уж наоборот в long переводи, а не в int, т.к. иначе тогда большие суммы денег, которые не влазят в int - ты тоже будешь выкидывать
money = int(money)
except ValueError:
return False
Но в моём примере int просто в строку кладётся. И тут не будет исключений.
Можно конечно %d вместо %s, но в 3.0 убрали это, так что стараюсь везде %s использовать.
>>> int(1111111111111111111111111111)
1111111111111111111111111111L
>>>
int - это функция округления вроде просто или преобразования из строки. Она и long может вернуть.тогда извини - не знал
Странно, что не сделали просто общего родителся для int и long.
bool вот, например, от int унаследован.
Я тоже этого принципа стараюсь придерживаться.а в 3-м питоне разве есть лонг?
Но в моём примере int просто в строку кладётся. И тут не будет исключений.
Можно конечно %d вместо %s, но в 3.0 убрали это, так что стараюсь везде %s использовать.
И не "if ... else: return false", а ассерт напиши.
А вообще это действительно unpythonic, либо используй юниттесты как все приличные люди, либо переходи на сишарп =)
Оставить комментарий
Phoenix
была такая функцияпотом оказалось, что long это не int. и общий предок у них это object.
Проверять на соответствие сначала int, потом Long как-то коряво мне видится.
Появилась идея, попробовать испытание огнём, но тоже несколько коряво.
Какой путь избрать?