Python Glossary English

все Python 3localeфункция

locale.setlocale()

настройка локали

Устанавливает или запрашивает локаль для категории (LC_NUMERIC, LC_ALL и др.); от неё зависят разделители чисел, валюта и сортировка.

Синтаксис

locale.setlocale(category, locale=None)

Главная ловушка: локаль — состояние всего процесса, а не модуля или потока. Вызов в одной библиотеке молча меняет atof(), format_string() и сортировку во всей программе и в остальных потоках, а сам setlocale потокобезопасным не является. Без второго аргумента функция только читает текущее значение; setlocale(LC_ALL, '') берёт локаль из окружения, а имя, которого нет в системе, даёт locale.Error. До первого вызова все категории, кроме LC_CTYPE, остаются 'C'.

Примеры

import locale
print(locale.setlocale(locale.LC_NUMERIC))  # → C — запрос, ничего не меняет
try:
    locale.setlocale(locale.LC_NUMERIC, 'ru_RU.UTF-8')
    print(locale.str(3.14))  # → ? 3,14 — если локаль есть в системе
except locale.Error as e:
    print('нет такой локали:', e)  # → ? unsupported locale setting
import locale
saved = locale.setlocale(locale.LC_ALL)
locale.setlocale(locale.LC_ALL, '')  # → ? локаль из окружения: LANG, LC_ALL
print(locale.localeconv()['decimal_point'])  # → ? '.' или ',' — зависит от машины
locale.setlocale(locale.LC_ALL, saved)  # вернуть как было — для всего процесса
print(locale.localeconv()['decimal_point'])  # → .

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности