如何在Python中从一个模块导入多个项目并将它们重命名?

28

我想从math中导入atandegree,并将它们重命名。

我尝试使用以下代码:

from math import atan,degree as t,z

但这会导致 ImportError: cannot import name 'z'

我进行了多次谷歌搜索,搜索词为“导入多个模块并重命名”,但都没有结果。Python手册也没有帮助——导入页面没有解释这一点(据我所知)。

我怎样才能从一个模块中导入多个项目,并将它们重命名?


相关:*David Beazley - 模块和包:活着就让它们死!- PyCon 2015*(一个关于导入语句的教程。真正的内容在6分40秒之后才开始。) - Peter Mortensen
2个回答

53
你需要为每个项目使用as
from math import atan as t, degree as z

这将导入并重命名它们。

11
Python参考手册实际上已经涵盖了这一点。在import语句的描述中,它说:

Python Reference Manual

import_stmt     ::=  "import" module ["as" name] ( "," module ["as" name] )*
                     | "from" relative_module "import" identifier ["as" name]
                     ( "," identifier ["as" name] )*
                     | "from" relative_module "import" "(" identifier ["as" name]
                     ( "," identifier ["as" name] )* [","] ")"
                     | "from" module "import" "*"

现在,这种符号看起来有点混乱,但是当您花时间学习编程语言时,您会变得更加熟悉它。它通常被称为“BNF”(即Backus-Naur形式)。大多数编程语言参考资料都会使用某个版本的BNF。
从上面的示例中,我们可以看到以下需要解释的符号:
- 竖线或管道字符(|)--用于分隔可选项 - 星号字符(*)--表示前面的语句(通常是包含在括号内的语句)重复零次或多次 - 方括号([和])--指示出现的部分是可选的,因此可能包含零次或一次。 - 括号((和))--用于将语句分组以便星号对其生效。
将上述参考内容缩减为您感兴趣的内容,我们有:
"from" relative_module "import" identifier ["as" name]
                     ( "," identifier ["as" name] )*

简而言之,对于您提供的例子,这意味着法律声明为:

from math import atan as t, degree as z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接