如何在Python导入模块时避免反复写模块名?
最近我经常使用 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 *
这种写法。这会让命名空间变得混乱,可能导致名称冲突,还会让调试变得更加困难。最重要的是,这样会让代码变得难以阅读,因为你无法清楚地知道某个特定的函数是从哪里来的。
在交互式解释器中可以例外使用这种方式。但一旦你习惯了使用缩短的名称,可能就不值得再去使用其他的约定了。