python - 不从 Python 模块导出函数

标签 python

如果我有一个包含以下内容的模块/文件 foo.py:

from math import sqrt

def foo():
    pass

如果我在另一个脚本中导入它,sqrt 也会在模块 foo 中定义。

import foo    
dir(foo)

其输出为

[..., # other things
 'foo',
 'sqrt']

我该如何防止这种情况发生?即,要么指定 sqrt 不导出,要么仅导出特定函数 - 在这种情况下,仅导出用户定义的函数。我知道对于用户定义的函数,您可以通过在模块中添加下划线作为前缀来私下定义它们,但在这种情况下,它不是用户定义的函数,因此我无法使用下划线前缀来定义它。

最佳答案

in this case it's not a user-defined function so I can't define it with an underscore prefix.

是的,你可以:

from math import sqrt as _sqrt

另一种方法是只在函数作用域中需要的地方导入对象。

(虽然这可能会回答您的问题,但我仍然不知道您为什么要这样做。这两种选择都很麻烦,不会让您的代码库看起来更好。)

关于python - 不从 Python 模块导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295277/

相关文章:

Python - 如何删除某个符号后所有行中的所有字符?

python - 用于从 1d 数组中选择元素的 2d 索引

python - 将全局值作为参数传递给装饰器和函数

python - 在 Tensorflow 中将张量转换为 numpy 数组?

python - Heroku EOFError 仅适用于两行 python 代码

python - 为图形的所有子图关闭轴

python - 是否应该只在 except block 内调用 logger.exception?为什么?

python - 如何使用 Python (scikit-learn) 计算 FactorAnalysis 分数?

python - 为什么非函数可调用对象不绑定(bind)到类实例?

python - Python 中的上下文相关方法 - 我做错了什么?