Реализация
System.Globalization.CultureInfo.CurrentCulture.Calendar.ToFourDigitYear
-
public virtual int ToFourDigitYear(int year)
{
if (year < 0)
throw new ArgumentOutOfRangeException("year", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
if (year < 100)
return (this.TwoDigitYearMax / 100 - (year > this.TwoDigitYearMax % 100 ? 1 : 0)) * 100 + year;
else
return year;
}
Надеюсь, это поможет!
«У меня есть приложение Python среднего размера с файлами модулей в различных подкаталогах.»
Хорошо. Обязательно убедитесь, что каждый каталог включает файл __ init __. Py
, так что это пакет.
«Я создал модули, которые добавляют эти подкаталоги в sys.path
»
Плохой. Используйте PYTHONPATH
или установите всю структуру Lib / site-packages
. Не обновляйте sys.path
динамически. Это плохо. Трудно управлять и поддерживать.
"импортирует группу модулей, используя import thisModule as tm
."
Не имеет смысла. Возможно, у вас есть один import thisModule как tm
для каждого модуля в вашей структуре. Это типичная стандартная практика: импортируйте только нужные модули, никаких других.
"Затем я импортирую этот модуль в другие с помощью from moduleImports import *
"
Плохо. Не скрывайте импорт кучи случайных вещей.
Каждый модуль должен иметь длинный список конкретных вещей, которые ему нужны.
import this
import that
import package.module
Явный список. Никакой магии. Нет динамического изменения в sys.path
.
В моем текущем проекте есть сотни модулей, около дюжины пакетов. Каждый модуль импортирует только то, что ему нужно. Никакой магии.
около дюжины пакетов. Каждый модуль импортирует только то, что ему нужно. Никакой магии. около дюжины пакетов. Каждый модуль импортирует только то, что ему нужно. Никакой магии.Несколько указателей
Возможно, вы уже разбили функциональность в различных модулях. Если правильно сделал большую часть времени вы не попадет в круговой импорт проблемы (например, если модуль a зависит на b и b на a вы можете сделать третий модуль c для удаления такого циркуляра зависимость). В крайнем случае, в import b, но в b import a в точка, где требуется, например, внутри функция.
Как только функциональные возможности
модули группируют их в пакеты под
подкаталог и добавьте файл __ init __. py
к нему, чтобы вы могли импортировать
пакет. Храните такие пакеты в
папку, например lib, а затем либо добавить
в sys.path или установите PYTHONPATH env
переменная
из импорта модуля * не может быть хорошей идеей. Вместо этого импортируйте все нужно. Это может быть полностью квалифицировано. Это не повредит быть многословным. например из pakageA.moduleB импорт CoolClass.
Способ сделать это - избегать магии. Другими словами, если вашему модулю требуется что-то от другого модуля, он должен импортировать это явно. Вы не должны полагаться на то, что что-то импортируется автоматически.
Как сказано в Zen of Python ( import this
), явное лучше, чем неявное.
Вы не получите рекурсию при импорте, потому что Python кэширует каждый модуль и не перезагружает тот, который у него уже есть.