Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2013 20:37:33

young_programmer
Зарегистрирован: 2013-08-22
Сообщения: 32
Репутация: +  -2  -
Профиль   Отправить e-mail  

Функция reload

Объясните пожалуйста, почему если не вызвать функцию reload, то вываливается ошибка:

>>> import sys
>>> sys.setdefaultencoding('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'
А если я перезагружаю модуль, то все проходит гладко
import sys
reload(sys)
sys.setdefaultencoding('utf-8')



Linux - это такая фэнтезийная MMORPG: эльфы в файлах, гномы на столах,
зомби в процессах, демоны в фоне, а на форумах сплошь тролли да красноглазые орки.

Офлайн

#2 Ноя. 11, 2013 21:53:29

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Функция reload

Потому что при старте setdefaultencoding удаляется, а изначально он там есть.

Офлайн

#3 Ноя. 11, 2013 22:08:18

young_programmer
Зарегистрирован: 2013-08-22
Сообщения: 32
Репутация: +  -2  -
Профиль   Отправить e-mail  

Функция reload

o7412369815963
Потому что при старте setdefaultencoding удаляется, а изначально он там есть.
Ого, интересно, не знал, что так может быть. Можете объяснить из-за чего так получается?

Сейчас читал описание функции с оф. сайта.
Set the current default string encoding used by the Unicode implementation. If name does not match any available encoding, LookupError is raised. This function is only intended to be used by the site module implementation and, where needed, by sitecustomize. Once used by the site module, it is removed from the sys module’s namespace.
Не очень понял смысл написанного там. Что подразумевается под “site module” и “where needed, by sitecustomize”.



Linux - это такая фэнтезийная MMORPG: эльфы в файлах, гномы на столах,
зомби в процессах, демоны в фоне, а на форумах сплошь тролли да красноглазые орки.

Отредактировано young_programmer (Ноя. 11, 2013 22:35:18)

Офлайн

#4 Ноя. 12, 2013 10:05:42

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Функция reload

young_programmer
Не очень понял смысл написанного там. Что подразумевается под “site module” и “where needed, by sitecustomize”.
Ну общий смысл такой - ф-ия предназначена только для внутреннего использования (“настройщиком”) в модуле когда это надо.

Офлайн

#5 Ноя. 12, 2013 11:10:34

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Функция reload

import модуля это сложный процесс, в процессе которого загружается модуль site.py, он наряду со своими обязанностями и убирает этот метод из пространства имён.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version