python可以区分使用相同名称定义但从不同模块导入的两个不同函数吗?

时间:2016-12-01 23:16:48

标签: python import tensorflow python-import

我使用的是cifar10 from tensorflow,并注意到模块distorted_inputscifar10_input.py中有两个名为cifar10.py的函数。 cifar10_train.py模块使用__init__.py导入行:

# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
...
==============================================================================

"""Makes helper libraries available in the cifar10 package."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from tensorflow.models.image.cifar10 import cifar10
from tensorflow.models.image.cifar10 import cifar10_input

distorted_inputs的不同功能如何不崩溃?这不是问题吗?

特别是cifar10_train.py导入如下:

from tensorflow.models.image.cifar10 import cifar10

表示它加载__init__.py。但是,当它这样做时,似乎有多个distorted_inputs函数让我失望。

可以找到整个cifar库: https://github.com/tensorflow/tensorflow/tree/r0.11/tensorflow/models/image/cifar10

3 个答案:

答案 0 :(得分:1)

一个是 cifar10_input.distorted_inputs() 另一个是 cifar10.distorted_inputs()

他们在不同的目录中,所以没关系。这就像将两个具有相同名称的文档保存在不同的文件夹中一样。

答案 1 :(得分:1)

如果您在区分两者时遇到问题,可以随时使用import cifar10 as ccifar10_input as cinput

但是像@rvictordelta所说,两者都应该可以正常工作,因为它们都在不同的目录中。

答案 2 :(得分:1)

如果从具有相同名称的不同模块导入两个函数,python将使用上次导入的方法

一个很好的例子

from math import *
from cmath import *
sin() # Python use sin from cmath not math module

同样适用于您的情况