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

Tim*_*Tim 10 python module

我想导入atandegreemath和他们两个重命名.

我试过用这个:

from math import atan,degree as t,z
Run Code Online (Sandbox Code Playgroud)

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

我做了一些谷歌搜索"导入多个模块并重命名",但都没有结果.Python手册没有帮助 - 导入页面没有解释这个(据我所知).

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

Tim*_*Tim 23

你必须使用as每个项目:

from math import atan as t, degree as z
Run Code Online (Sandbox Code Playgroud)

这会导入并重命名它们.


TZH*_*ZHX 8

Python的参考手册呢,其实,这个覆盖.它在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" "*"
Run Code Online (Sandbox Code Playgroud)

现在,这种符号乍一看有点令人困惑,但随着花在编程语言上的时间,你会更熟悉它.它通常被称为"BNF"(代表Backus-Naur形式).大多数编程语言参考将使用它的某些版本.

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

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

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

"from" relative_module "import" identifier ["as" name]
                     ( "," identifier ["as" name] )*
Run Code Online (Sandbox Code Playgroud)

TL; DR对于你的例子,这导致了法律陈述

from math import atan as t, degree as z
Run Code Online (Sandbox Code Playgroud)