Большую часть времени это было бы полезно для ясности и разумно, чтобы сделать, но она не всегда имеет место. Ниже несколько примеров обстоятельств, где импорт модуля мог бы жить в другом месте.
Во-первых, у Вас мог быть модуль с модульным тестом формы:
if __name__ == '__main__':
import foo
aa = foo.xyz() # initiate something for the test
, Во-вторых, у Вас могло бы быть требование для условного импорта некоторого различного модуля во времени выполнения.
if [condition]:
import foo as plugin_api
else:
import bar as plugin_api
xx = plugin_api.Plugin()
[...]
существуют, вероятно, другие ситуации, куда Вы могли бы поместить импорт в другие части в коде.
Да. Просто объявите константу в диапазоне WM_USER, например
#define WM_RETICULATE_SPLINES (WM_USER + 0x0001)
Вы также можете зарегистрировать сообщение по имени с помощью API RegisterWindowMessage.
Затем вы можете отправлять эти сообщения с помощью SendMessage, PostMessage или любого из их вариантов.
Ого, давай остановимся и подумаем ...
Прежде всего, сама Windows отправляет сообщения в диапазоне WM_USER + n
, поэтому WM_APP
был изобретен (я выяснил это на собственном горьком опыте). Но становится еще хуже ... ничто не мешает плохо работающим приложениям транслировать WM_USER + n
или WM_APP + n
сообщения, и потому что люди украли кристалл бесконечной глупости у Боги, это действительно происходит в реальном мире.
Итак, повторяйте за мной, единственное безопасное сообщение - это то, которое я определяю сам и могу видеть только себя. Используйте RegisterWindowMessage. И даже тогда будьте недоверчивы. Когда мне нужна строка для определения сообщения RegisterWindowMessage, Я использую GUIDGEN для создания строки и помещаю понятный человеку префикс для конкретного приложения в получившуюся болтовню, чтобы помочь мне различать несколько сообщений в коде.
Ставка на глупость ваших собратьев - это всегда выигрышная ставка.
Если вам нужна авторитетная информация по этой теме, см. здесь . Нет, это не мой сайт, это сайт Джо Новичка.
WM_USER
(или WM_APP
) WM_APP