все Python 3astпонятие
ast.ImportFrom
импорт
Узел from module import name: module — имя модуля или None, names — список alias, level — число точек относительного импорта.
Синтаксис
ast.ImportFrom(module, names, level)
У 'from . import x' поле module равно None, а не '.' — точки уходят в level, и код, склеивающий module + '.' + name, на относительных импортах падает. 'from x import *' даёт alias с name='*'. 'from __future__ import annotations' — тоже ImportFrom, хотя компилятор обрабатывает его особо.
Примеры
import ast
for src in ['from os import path as p', 'from .. import utils', 'from x import *']:
n = ast.parse(src).body[0]
print(repr(n.module), n.level, [a.name for a in n.names])
# → 'os' 0 ['path'] / None 2 ['utils'] / 'x' 0 ['*']
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности