import tensorflow as tf
tf.abs(x)
当运行上面的代码时,python如何定位函数tf.abs? 该函数在tensorflow / python / ops / math_ops.py中定义,为什么它可以称为tf.abs?
答案 0 :(得分:0)
以下是一个示例: 包含模块bar.py的包foo暴露函数bat:
目录结构:
.
└── foo
├── __init__.py
└── bar.py
bar.py的内容:
$ cat foo/bar.py
def bat():
print('bat')
__init __。py:
的内容$ cat foo/__init__.py
from bar import bat
__all__ = [bat]
示例代码和执行结果:
>>> import foo
>>> foo.bat
<function bat at 0x104f10140>
>>> foo.bat()
bat
>>>
答案 1 :(得分:0)
在__init__.py
TensorFlow导入from tensorflow.python import *
进一步导入from tensorflow.python.ops import math_ops
。
然后通过以下方式探讨所有这些:
__all__ = [s for s in dir() if s in _exported_dunders or not s.startswith('_')]
其中_exported_dunders
是一些双重强制名称的列表,它不应该公开。
关键部分是s for s in dir()
。在没有参数的情况下调用dir()
时,它会显示当前模块名称空间中的所有名称。因此,它最终会添加所有名称以及已导入的名称。