0

问题的快速演示:
定义一个模块并命名它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中的一个错误,我不确定!

4

2 回答 2

2

您的模块functions将包含对全局导入并在其范围内声明的所有内容的引用。

当您在from scipy import *模块内部进行操作时,它将导入所有内容,正如它应该的那样,您将能够scipy从您的功能模块访问所有功能。

如果您只想 a()在导入后查看functions,请将其更改为

# functions.py
def a():
    from scipy import sin
    return sin(1)

这将确保导入您的模块的人不存在对您的导入的引用。

这里有一些你可以阅读的内容。imports

于 2012-05-31T09:41:03.423 回答
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']
于 2012-05-31T09:45:41.430 回答