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

时间:2015-04-25 12:53:20

标签: python module

我想从atan导入degreemath并重命名。

我尝试过使用它:

from math import atan,degree as t,z

但是这给了ImportError: cannot import name 'z'

我进行了多次Google搜索"导入多个模块并重命名",但都没有结果。 Python手册没有帮助 - 关于导入的页面并没有解释这个(据我所知)。

如何从模块导入多个项目并重命名?

2 个答案:

答案 0 :(得分:22)

您必须为每个项目使用as

from math import atan as t, degree as z

这会将它们全部导入并重命名。

答案 1 :(得分:7)

事实上,Python Reference Manual确实涵盖了这一点。它在import声明的描述中说:

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 Form )。大多数编程语言参考都会使用它的某些版本。

从上面的示例中,我们看到了以下可以解释的符号:

  • 竖线或竖线字符(|) - 用于分隔备选方案
  • 星号/星号(*) - 这意味着前面(通常包含的语句)重复零次或多次
  • 方括号([]) - 这些表示发生的封闭部分是可选的,因此包含零次或一次
  • 括号(()) - 这些用于对星号的语句进行分组以对生效

将上面的参考文献减少到您感兴趣的内容,我们有:

"from" relative_module "import" identifier ["as" name]
                     ( "," identifier ["as" name] )*

TL; DR 根据您的示例,这会导致法律声明

from math import atan as t, degree as z