TLDR
Тире не незаконны, но вы не должны использовать их по 3 причинам:
- Вам нужен специальный синтаксис для импорта файлов с тире
- Никто не ожидает имя модуля с тире
- Это противоречит рекомендациям Python Style Guide
Если вам определенно необходимо импортировать имя файла с дефисом, используйте специальный синтаксис:
module_name = __import__('module-name')
Вам интересно, зачем нам нужен специальный синтаксис?
Причина специального синтаксиса заключается в том, что когда вы пишете import somename
, вы создаете объект модуля с идентификатором somename
(так что вы можете позже использовать его, например, с somename.funcname
). Конечно, module-name
не является допустимым идентификатором и, следовательно, специальный синтаксис, который дает правильный.
Вы не понимаете, почему имя модуля не является допустимым идентификатором?
Не волнуйся, я тоже. Вот подсказка, чтобы помочь вам: Посмотрите на эту строку Python: x=var1-var2
. Вы видите вычитание справа от присваивания или имя переменной с тире?
PS
Ничего оригинального в моем ответе, кроме того, что я считал наиболее релевантными битами информации из всех других ответов в одном месте