我想导入atan并degree从math和他们两个重命名.
我试过用这个:
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)
这会导入并重命名它们.
在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)