Ved-форум поддержки

Программирование => Python => Тема начата: DigitalMag от Февраля 16, 2019, 10:03:20 am

Название: Чем отличается isdigit и isdecimal?
Отправлено: DigitalMag от Февраля 16, 2019, 10:03:20 am
Собственно сабж.

s = ''
for a in range(128):
    if chr(a).isdigit():
        s+=chr(a)

print (s)

Если isdigit заменить на isdecimal, будет тот же самый результат. В чем разница между ними?
Название: Re: Чем отличается isdigit и isdecimal?
Отправлено: AdminUser от Февраля 16, 2019, 10:14:16 am
isdigit() - для строк в кодировке ascii.
isdecimal() - для строк в кодировке unicode.

Т.к. в питоне, начиная с 3-ей версии, строки по умолчанию хранятся в юникоде, то isdecimal будет работать правильней, ибо он будет охватывать весь спектр кодов юникода, а isdigit - гарантированно только в диапазоне 0-127

Во втором питоне для типа str предпочтительней isdigit