问题的快速演示:
定义一个模块,并将其命名为functions.py
,其中包含:(这只是一个示例)
from __future__ import division
from scipy import *
def a():
return sin(1)
现在尝试在单独的文件中使用它,如下所示:
import functions as f
如果您输入f
,则弹出列表会显示所有scipy
内容,而内容应仅为a
!请参阅:
如何解决这个问题?
这个问题很难看出模块functions
中存在什么。
注意:
1)认为模块function
将具有许多用户定义的功能
2)为什么scipy功能在全球范围内可用是没有问题的。没关系。问题是为什么它们会成为f 的成员?!
它可能是 Pyscripter 中的一个错误,我不确定!
答案 0 :(得分:2)
您的模块functions
将包含对全局导入并在其范围内声明的所有内容的引用。
当您在模块中执行from scipy import *
时,它将导入所有内容,并且您将能够从函数模块中访问所有scipy
函数。
如果您只想在导入a()
后看到functions
,请将其更改为
# functions.py
def a():
from scipy import sin
return sin(1)
将确保导入模块的人员不会引用您的导入。
您可以通过imports
获得一些reading。
答案 1 :(得分:0)
首先,您应该避免使用import *
,因此您的代码应如下所示:
from __future__ import division
from scipy import sin
def a():
return sin(1)
或
from __future__ import division
import scipy
def a():
return scipy.sin(1)
另一种方法是将其添加到您的模块中:
__all__ = ['a']