Python:如何清理凌乱的弹出列表

时间:2012-05-31 09:35:20

标签: python module popup interactive pyscripter

问题的快速演示:
定义一个模块,并将其命名为functions.py,其中包含:(这只是一个示例

from __future__ import division
from scipy import *

def a():
    return sin(1)

现在尝试在单独的文件中使用它,如下所示:

import functions as f

如果您输入f,则弹出列表会显示所有scipy内容,而内容应仅为a!请参阅:
enter image description here

如何解决这个问题?

这个问题很难看出模块functions中存在什么。

注意:
1)认为模块function将具有许多用户定义的功能 2)为什么scipy功能在全球范围内可用是没有问题的。没关系。问题是为什么它们会成为f 的成员?!
它可能是 Pyscripter 中的一个错误,我不确定!

2 个答案:

答案 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']