如何在Python导入模块时避免反复写模块名?

8 投票
4 回答
3939 浏览
提问于 2025-04-16 02:44

最近我经常使用 math 模块。我不想每次都写 math.sqrt(x)math.sin(x)。我想简化一下,直接写 sqrt(x)sin(x)。该怎么做呢?

4 个回答

5

你可以这样导入:

>>> from math import sqrt, sin
>>> sqrt(100)
10.0

来源:关于模块的更多信息

有一种导入语句的变体,可以直接把模块中的名字导入到当前模块的符号表里。比如:

>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

还有一种变体可以导入模块定义的所有名字,这在交互式解释器中很有用:

>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

需要注意的是,一般来说,从模块或包中导入所有名字(*)是不太推荐的,因为这样会导致代码不太容易阅读。不过,在交互式会话中使用它来减少输入是可以的。

5
from math import sin, sqrt
# Then you can just do
sqrt(4)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

7

对于比较长的模块名称,通常会把它们缩短,比如:

import numpy as np

这样你就可以使用简短的名称了。或者你也可以只导入你需要的特定内容,就像其他回答中提到的那样:

from math import sin, sqrt

这种方法通常在包里面使用,适合那些紧密关联的代码。而对于库来说,使用缩短名称的第一种方式通常是更受欢迎的选择。

绝对不要使用 from math import * 这种写法。这会让命名空间变得混乱,可能导致名称冲突,还会让调试变得更加困难。最重要的是,这样会让代码变得难以阅读,因为你无法清楚地知道某个特定的函数是从哪里来的。

在交互式解释器中可以例外使用这种方式。但一旦你习惯了使用缩短的名称,可能就不值得再去使用其他的约定了。

撰写回答